如何告诉Vim评论的结束

时间:2016-03-27 18:06:27

标签: vim comments

Vim有一个功能,如果上一个注释行太长并且被包装,它会自动在新行上插入注释前缀。如果按Enter键,它还会插入换行符前缀。这样可以很容易地输入长注释,但是当您想要结束注释时会很不方便。您必须点击退格键才能删除最后一行的注释前缀。

是否可以修改Vim,以便如果我只在最后一行按Enter键,它知道终止评论?

2 个答案:

答案 0 :(得分:2)

这可以由formatoptions控制。从链接的文档页面

  

' formatoptions'是一个字符串,可以包含下面的任何字母      的 ...
  t使用textwidth自动换行文本   c使用textwidth自动换行注释,自动插入当前评论标题   r在插入模式下按Enter键后自动插入当前注释引导符   o点击“' o”后自动插入当前评论标题。或者' O'在正常模式下。
  的 ...

这意味着您需要c,而不是r,大概不是o.vimrc

中的一个简单示例行
autocmd FileType bash,csh setlocal formatoptions=c

您需要在其他位置设置textwidth(例如set textwidth=72)。

更多地查看链接页面的延续。如果您有一串字母,那么只需从中移除ro即可。相关选项为comments - 请参阅format-comments页。

答案 1 :(得分:0)

Vim怎么会知道你想要的最后一行是什么?

我能想到的唯一解决方法是绑定到InsertLeave自动命令以清除该行,如果它只是一个注释字符:

autocmd InsertLeave * if getline('.') =~ '^# *$' | normal! 0D | endif

但是,它还会删除行上的注释字符,例如:

# Hello, world
#
# Continuing with the next paragraph

可以做出的改进:

  • 解析&comments以获取评论字符 - 请参阅:help format-comments了解格式。

  • 如果下一行没有以评论字符开头,则只删除该行。

  • 您可以在插入模式下映射<Cr>以执行类似的操作,这样您就不必离开插入模式 - 但是要非常小心,因为您可能会删除超过你想要的!

  • 我的建议:只需按退格键。