我正在尝试在我的.vimrc
中设置一个缩写,它会在我的CSS文件中为标题级别的注释插入注释模板。
我要插入的评论是:
/* ==========================================================================
#
========================================================================== */
然后我会跳回#
并在那里添加我的标题(例如BUTTONS
)。
我试图设置的缩写如下所示:
iab comsec·
\/* ==========================================================================
\<Cr>#
\<Cr>========================================================================== */
(其中·
表示尾随空格。)
这个感觉非常粗糙,但具体问题是,如果尝试在我的CSS中删除comsec
,它会开始将其包装在更多中评论。输出如下:
/* ==========================================================================
* #
* ========================================================================== */
注意第2行和第3行开头的两个*
?
有没有办法告诉vim不要尝试聪明,只是完全放弃我告诉它的内容?一种阻止vim试图在评论中包装评论的方法吗?
我不是一个特别讨厌的vim用户,所以我很有可能让事情过于复杂,或者遗漏了一些明显的东西,或者使用了错误的工具。
谢谢!
答案 0 :(得分:1)
如果您是那种能够跟踪您的个人用途的人,那么这并不是很有趣但有效。您可以将外部命令的输出导入缓冲区,因此我在.vimrc文件中放置了这样的映射:
"bc = block comment
map ,bc :read! python ~/my_personal_utils/insert_css_comment.py
所以,我只需输入&#34;,bc&#34;添加评论。至少在我的Mac上,这使我处于命令模式,因此我的光标位于&#39; .py&#39;我可以快速输入像BUTTONS这样的参数(即python脚本采用可选参数)。
答案 1 :(得分:0)
这是一种更简单的方式来插入您的评论,如果该行被评论模板包围,则每次都会检查。
您所要做的就是在新行上写下您的评论,然后在插入模式期间按; 。 (你可以改变字符; 你想要的任何组合。)
评论模板由变量l:start
,l:begin
,l:end
设置
因此,您可以根据需要更改空格或 = 的数量。
如果您想完全更改模板,请记住您还需要更改变量l:matchprev
,l:matchhier
,l:matchnext
的正则表达式。
inoremap <silent> ; <Esc>mx:call Comment()<cr>i<Right>
function! Comment()
let l:start= "/* ====="
let l:begin=" # "
let l:end= " ==== */"
let l:next=getline(line(".")+1)
let l:hier=getline(line("."))
let l:prev=getline(line(".")-1)
let l:matchnext= matchstr( l:next , '^\s*=\+\s*\*/\s*$')
let l:matchhier= matchstr( l:hier , '^\s*#\s*.*$')
let l:matchprev= matchstr( l:prev , '^\s*/\*\s*=\+\s*$')
if l:matchnext != '' && l:matchprev != '' && l:matchhier != ''
return 0
else
execute ":s:^.*$:".l:start."\r".l:begin."&\r".l:end."\r:"
"the number 3 is the length of the variable l:begin
normal! `xj3l
endif
endfunction
将此代码写入另一个文件 scriptname ,然后您可以通过首先在命令模式中键入:so scriptname
另一种方法是将所有内容简单地放在.vimrc
文件中
答案 2 :(得分:0)
这是一个执行此操作的功能。
:function! Comment()
:normal! i/*
:normal! 80a=
:normal! o#
:normal! o
:normal! 80i=
:normal! a*/
:endfunction
您可以将其放入vimrc文件中并为此创建命令或地图。
命令
:cmap comsec call Comment()
您可以将光标放在一行上,然后调用此命令。
或插入模式映射
:imap comsec <ESC>:comsec<CR>
答案 3 :(得分:0)
作为替代方案,我建议用nerdcommenter评论/取消注释几个关键笔画。
或者,甚至更好,ultisnips。您可以轻松地为这些标题制作自己的模板:
: UltiSnipsEdit
摘要标题&#34;标题评论&#34;
/ * ===================================
* $ {1}
* =================================== * /
endsnippet