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