[英]vim using cmap to simplify search and replace regex
我需要将C ++ switch语句中的大小写和默认值缩进2个空格。 所以我将这一行添加到我的vimrc文件中:
cmap >c %s/\(\ case\ \|\ default:\)/\ \ \1/g
但是,当我在vim中键入:> c时,结果为:
:%s/\(\ case\ |\ default:\)/\ \ \1/g
\\ | 预期代替|,
有人可以告诉我我的cmap有什么问题吗? 谢谢!
目前,vim可以理解反斜杠|
为了逃避它,从而避免这种行为,请尝试再添加一个反斜杠:
cmap >c %s/\(\ case\ \\|\ default:\)/\ \ \1/g
|
角色与命令分开。 在这种情况下,最好逃避您的|
通过使用<bar>
代替。
我认为命令比映射尤其是cmap
更合适。
command! -range=% CaseFix <line1>,<line2>s/\(\ case\ \<bar>\ default:\)/\ \ \1/g
如果确实需要映射,建议使用<leader>
进行普通模式映射。
nnoremap <leader>cf :%s/\(\ case\ \<bar>\ default:\)/\ \ \1/g<cr>
另外,我认为您最好调整缩进规则,而只需使用=
重新缩进代码即可。 例如gg=G
C / C ++缩进规则通常由'cindent'
, 'cinkeys'
和'cinoptions'
。
有关更多信息,请参见:
:h key-notation
:h :command
:h =
:h 'cindent'
:h 'cinkeys'
:h 'cinoptions'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.