vim:添加注释宏

vim:添加注释宏,vim,Vim,维姆对我来说几乎是完美的。但是我仍然需要一个行注释和块注释特性,我想知道如何用python和javascript编写一个vimrc来实现这一点 没有加载项 t建议提供了一个与vim工作方式充分集成的操作员: 它支持的注释样式比前面提到的nerdcomment要少。如果您想要c样式的行注释(我认为在javascript中是合法的),可以在.vimrc中设置以下内容,它将注释掉光标(在正常模式下)当前所在的行 map \lo I/*<Esc>A*/<Esc> map\lo

维姆对我来说几乎是完美的。但是我仍然需要一个行注释和块注释特性,我想知道如何用python和javascript编写一个vimrc来实现这一点

没有加载项


t建议提供了一个与vim工作方式充分集成的操作员:


它支持的注释样式比前面提到的nerdcomment要少。

如果您想要c样式的行注释(我认为在javascript中是合法的),可以在.vimrc中设置以下内容,它将注释掉光标(在正常模式下)当前所在的行

map \lo I/*<Esc>A*/<Esc>
map\loi/*A*/
如果需要python注释,可以执行以下操作:

map \lo I#<Esc>
map\loi#
如果只希望有一条语句,可以执行以下操作:

if match(expand("%:t"), ".py") != -1
  map \lo I#<Esc>
else
  map \lo I/*<Esc>A*/<Esc>
endif
如果匹配(展开(“%:t”),“.py”)!=-1.
映射\loi#
其他的
映射\loi/*A*/
恩迪夫
如果您正在编辑.py文件,则将使用#注释,否则将使用/*…*/评论

编辑:以下函数将通过检查文件类型,用适当的样式注释注释掉视觉上选定的块。然后可以将其映射到函数后面的vmap语句之类的简单语句

  function! BlockComment(top,bottom)

    " deal with filetypes that don't have block comments 
    let fileName = expand("%:t")
    echo fileName

    if fileName =~ "\.py" || fileName =~ "\.sh" || fileName =~ "\.pl"
        execute "normal I# "
        return
    elseif fileName =~ "\.vim"
        execute 'normal I" '
        return
    endif

    " for c-style block comments (should work for javascript)
    let topLine = line("'<")

    " the + 1 is because we're inserting a new line above the top line
    let bottomLine = line("'>") + 1

    " this gets called as a range, so if we've already done it once we need to
    " bail
    let checkLine = getline(topLine - 1)
    if (checkLine =~ '\/\*')
        return
    endif

    let topString = "normal " . topLine . "GO/*"
    let bottomString = "normal " . bottomLine . "Go*/"

    execute topString
    execute bottomString

  endfunction

  vmap <Leader>bco<CR> :call BlockComment()<CR>
函数!BlockComment(顶部、底部)
“处理没有块注释的文件类型
让fileName=展开(“%:t”)
回显文件名
如果文件名=~“\.py”| |文件名=~“\.sh”| |文件名=~“\.pl”
执行“正常I#”
返回
elseif fileName=~“\.vim”
执行“正常I”
返回
恩迪夫
“对于c风格的块注释(应适用于javascript)
让topLine=line(“”)+1
“这被称为一个范围,所以如果我们已经做了一次,我们需要这样做
“保释
让checkLine=getline(topLine-1)
如果(检查线=~'\/\*')
返回
恩迪夫
让topString=“normal”。topLine。“GO/*”
让bottomString=“normal”。底线。“Go*/”
执行上串
执行底部字符串
端功能
vmap bco:调用BlockComment()

忽略古怪的语法突出显示。语法高亮显示器似乎不支持vimscript。

通过块注释功能,您的意思是选择一个具有视觉模式的块,然后在其周围放置块注释吗?还是什么?是的,选择一个具有视觉模式的块,然后放置块注释编辑我的答案以包含一个将启动的函数虽然OP特别要求提供行或块注释,但我想我应该提到这个vimrc-only脚本,它向函数中添加了类似javadoc的注释!你的意思是在光标行上进行注释,但是如何选择一个可视块并对其进行注释。我必须对此做一些研究…:)我在vimrc中添加了map,但是如何使用它?使用视觉模式选择一块文本,然后使用bco调用该函数。通常映射到\,而使用的是Enter。因此,当您选择了文本时,键入
\bco
,然后按
Enter
就可以了。书呆子评论员是最好的选择。