Vim:使用<cword> </cword>创建注释和新子例程的功能

时间:2011-07-07 13:40:05

标签: vim

我正在尝试在我的vimrc中编写一个函数,该函数允许我将vim光标(而不是鼠标光标)“悬停”在相关单词上并创建一个doc注释(已经在评论)以及新的子程序。所以我将从以下开始:

newSubName

然后将鼠标悬停在上面并调用sub,它将替换为:

#------------------------------------------------------------------------------
# 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 :(得分:0)

任何模板/片段扩展器都应该简化您的生活。例如,使用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>的映射调用它(此处我使用另一种方法来剪切函数名称)在光标下。。