Vim: функция для создания комментария и новой подпрограммы с использованием <cword> - PullRequest
0 голосов
/ 07 июля 2011

Я пытаюсь написать функцию в моем vimrc, которая позволила бы мне «навести» курсор inim (не курсор мыши) на рассматриваемое слово и создать комментарий к документу (со словом уже вкомментарий) вместе с новой подпрограммой.Поэтому я бы начал с:

newSubName

, а затем наведите курсор мыши и вызовите сабвуфер, он заменит это на:

#------------------------------------------------------------------------------
# Subroutine: newSubName
# Function  : 
# Parms     : 
# Returns   : 
# Assumes   : 
#------------------------------------------------------------------------------

sub newSubName() {

}

У меня есть код для создания декларации сабвуфера"в нижней части файла (получено из Интернета), но я не могу понять, как превратить его в то, что я хочу.Код, который я использую:

function! Newsub()
    let word = "sub " . expand("<cword>") . "()" . " {" . "}"
    let ln = search("__.*__", 'nW')
    if ln == 0
        call append('$', word)
    else
        call append(ln-1, word)
    endif
endfunction

Любая и вся помощь приветствуется.

Спасибо, RzITex

1 Ответ

0 голосов
/ 07 июля 2011

Любой расширитель шаблонов / сниппетов должен упростить вашу жизнь. Например, с mu-template v2.4.0 (доступно только через svn / vim-addon-manager):

VimL: " {rtp}/after/template/{filetype}/func.template
#------------------------------------------------------------------------------
# Subroutine: <+g:func+>
# Function  : <++>
# Parms     : <++>
# Returns   : <++>
# Assumes   : <++>
# Date      : <+strftime('%c')+>
# Author    : <+g:myname_that_I_need_to_define_in_my_vimrc+>
#------------------------------------------------------------------------------

sub <+g:func+>() {
<++>
}<++>

и ftplugin {rtp} / ftplugin / {filetype} .vim

" here the anti-inclusion guards, ...
" and the untested mapping
nnoremap <buffer> <c-x>f :let g:func=expand('<cword>')<cr>"_diw:exe "Mutemplate ".&ft."/func"<cr>:unlet g:func<cr>

Примечание: это отображение содержит все, что вам нужно:

  • получить текущее слово (есть много других методов)
  • удалить это слово с помощью "_diw (:h "_, :h diw)
  • применить что-то, что сделает расширение. Если вы предпочитаете работать вручную с функцией, которая вызывает :put, назовите ее, например, s:FuncExpand(name), и вызовите ее из сопоставления с помощью diw:call <sid>FuncExpand(@")<cr> (здесь я использую другой способ вырезать имя функции под курсором).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...