对于我工作地点的标题样式注释(包括文件中代码的主要新部分),我们使用以下标准:
##################################
# This is a multiline comment #
# and we've surrounded it by the #
# comment symbol. #
##################################
当存在冗长的多行注释时(因为常常在描述性标题中),这可能需要一分钟。这是一项微不足道的任务,我想让它自动化。我的目标是编写一个脚本,允许我选择一个范围(在可视模式下),输入命令,然后输入注释字符,从而将所选行包含在如上所示的框中。我在VIM脚本上做过一些尝试,但老实说,之前从未编写过VIM脚本,我的代码很乱,而且我认为发布它的原因实际上是不利的。
有关如何构建此建议的任何建议吗?
答案 0 :(得分:7)
你不需要“分钟”来完成这项工作。使用vim的ctrl-v
块选择I or c
和r (replace)
,你可以很容易地做到这一点。但是,如果你需要每天做100次,这个小功能可以帮助你:
let g:wrap_char = '#'
function! WrapThem() range
let lines = getline(a:firstline,a:lastline)
let maxl = 0
for l in lines
let maxl = len(l)>maxl? len(l):maxl
endfor
let h = repeat(g:wrap_char, maxl+4)
for i in range(len(lines))
let ll = len(lines[i])
let lines[i] = g:wrap_char . ' ' . lines[i] . repeat(' ', maxl-ll) . ' ' . g:wrap_char
endfor
let result = [h]
call extend(result, lines)
call add(result,h)
execute a:firstline.','.a:lastline . ' d'
let s = a:firstline-1<0?0:a:firstline-1
call append(s, result)
endfunction
来源该文件,请注意
g:wrap_char
您可以为边框设置任何字符,我在这里使用#
。一个小小的演示:
答案 1 :(得分:0)
如果这些插件在重新发明轮子之前具有所需的功能,我建议潜入NERDcommenter或tcomment。如果没有,他们的来源可以是一个很好的起点。