繁体   English   中英

vim使用cmap简化搜索并替换正则表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM