我需要手动缩放C ++ switch语句中的case和default两个空格。 所以我将这一行添加到我的vimrc文件中:
cmap >c %s/\(\ case\ \|\ default:\)/\ \ \1/g
但是,当我在vim中输入:> c时,会产生:
:%s/\(\ case\ |\ default:\)/\ \ \1/g
\ |预期而不是|,
有人能告诉我cmap中有什么问题吗?谢谢!
答案 0 :(得分:0)
目前vim在|
之前理解反斜杠,试图逃避它,因此行为,尝试再添加一个反斜杠:
cmap >c %s/\(\ case\ \\|\ default:\)/\ \ \1/g
答案 1 :(得分:0)
|
caracter分离为命令。在这种情况下,最好使用|
转义<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'