我对Vim的map
命令比较陌生,但我理解一般语法。
TL:DR: 为什么我需要〜/ .vimrc文件中的额外管道?
vmap <C-e> :s/^\(\/\*\\| \*\/\\| \*\)/\/\/\//g<CR>:noh<CR>
背景:我在我写的地图上感到困惑,要求<C-e>
替换
/*
* Comment blocks
*/
与
///
/// Company Doxygen comment block
///
如果我在vim命令行中编写替换,那么在\
运算符没有额外|
的情况下它可以正常工作。
:'<,'>s/^\(\/\*\| \*\/\| \*\)/\/\/\//g<CR>:noh<CR>
感谢阅读!
答案 0 :(得分:1)
管道|
用于分隔Vim命令。所以如果你做了以下事情:
map a b | c
它将被视为两个不同的命令/语句:map a b
和c
。为了避免|
被中断为命令分隔符,您需要通过\|
转义它或使用<bar>
。
所以你的命令看起来更像是:
xnoremap <c-e> :s#\v^(/\*<bar> \*/<bar> \*)#///#g<CR>:noh<CR>
注意:通过使用#
作为替换分隔符以及使用非常神奇的\v
,我减少了转义。我还切换到noremap
以阻止重新映射以及使用xmap
而不是vmap
来阻止在选择模式下触发此操作。
如需更多帮助,请参阅:
:h :|
:h <bar>
:h key-codes
:h :map-commands
:h /\v