我有以下关键地图:
nmap <F9> :s/^/\/\*! /<cr>:s/$/ !\*\//<cr>j
旨在以C风格评论线条。当我点击<F9>
时它工作正常。但是当我尝试使用数字(以评论指定的行数)时,它会错过除最后一行之外的每一行的结束括号*/
。它看起来像:
/*! foo1;
/*! foo2;
/*! foo3; !*/
我有类似的关键地图取消注释:
nmap <F10> :s/^\/\*! //e<cr>:s/ !\*\/$//e<cr>j
且情况类似(不删除右括号)。
编辑:
答案 0 :(得分:2)
实际上vim
键映射通常不支持行范围。但是有一些解决方法:
nmap <F9> :'<,'>s/^/\/\*! /<cr>:'<,'>s/$/ !\*\//<cr>j
(并注意您可以在一行上发出更多ex命令,以便将其“缩短”到nmap <F9> :'<,'>s/^/\/\*! /|'<,'>s/$/ !\*\//<cr>j
< / LI>
答案 1 :(得分:2)
嗯...棘手。这与第一个替换命令转换为范围:.,.+n
有关,但第二个命令仅作用于最后一行。我不太清楚为什么会这样,但转换为单一替换可以解决问题。因此,折叠成一个电话,然后整理一点,这有效:
nnoremap <F9> :s!.*!/* & */!<CR>j
(请注意使用!
代替/
作为模式分隔符。您可以:s
使用(几乎)任何字符。/
只是默认值。如果你的模式使用了很多/
s,那么使用其他东西并节省一些逃脱是明智的。)