假设我想评论和取消注释一行。
我知道我可以
:s!^!//!
进而
:s!^//!!
现在如果我想把它作为一句台词怎么办?
基本上,如果一行以 开头,//
然后将其删除,别的添加它。
我想将此命令映射到一个快捷方式,而不是两个。
答案1
我很确定这不能直接完成。不过,我为你想出了一个功能。把这个放在你的~/.vimrc
:
function! Toggle()
s!^\(\s*/\?[^/\s]/\?\)!xxx//\1!e
s!^\(\s*\)//!\1!e
s!^xxx//!//!e
endfunc
(这会将xxx//
行开头已有的任何内容更改为//
,但我认为这种情况很少发生)。您可以随时使用 来调用它:call Toggle()
,但您可能会发现将其映射到键/组合会更方便。下面将其映射到Ctrl+ /;当然,您可以替换您喜欢的任何组合键(询问您是否需要帮助映射到另一个组合)。也将其放入您的~.vimrc
:
nnoremap <C-/> :call Toggle()<CR>
vnoremap <C-/> :call Toggle()<CR>
inoremap <C-/> <Esc>:call Toggle()<CR>i
它们分别将Ctrl+映射/到正常、可视和插入模式下的函数。请注意,插入映射将使您返回到插入模式,但将光标移动到行的开头。如果您希望保持正常模式,只需i
从行尾删除 即可inoremap
。
(更新以处理空格。删除//
空格后,但始终插入到行的开头)