是什么导致vim exec所需的“\”数量不对称?
考虑以下文件,不知羞耻地从中窃取 假设我试图找到这两类标题上面的文本,我写了下面的表达式是什么导致vim exec所需的“\”数量不对称?,vim,Vim,考虑以下文件,不知羞耻地从中窃取 假设我试图找到这两类标题上面的文本,我写了下面的表达式 :onoremap <buffer> ih :<c-u>execute "normal! ?^\\(==\\+\\|--\\+\\)$\r:nohlsearch\rkvg_"<cr> 这似乎非常违反直觉,因为\可以在字符串中用\\表示,而\+可以在字符串中用\\+表示 为什么“需要”来代表 我正试图为原因建立一个心理模型,这样我就可以对未来的案例进行这样的推理。双引号中
:onoremap <buffer> ih :<c-u>execute "normal! ?^\\(==\\+\\|--\\+\\)$\r:nohlsearch\rkvg_"<cr>
这似乎非常违反直觉,因为\可以在字符串中用\\表示,而\+可以在字符串中用\\+表示
为什么“需要”来代表
我正试图为原因建立一个心理模型,这样我就可以对未来的案例进行这样的推理。双引号中的反斜杠只需要转义一次,这样\\就会给出'\。但是|需要转义两次,一次转义双引号,另一次转义是因为否则它将结束:map命令。出于这个原因,我强烈建议使用而不是映射的内部。这记录在。:帮助地图栏下
:onoremap <buffer> ih :<c-u>execute "normal! ?^\\(==\\+\\|--\\+\\)$\r:nohlsearch\rkvg_"<cr>
:onoremap <buffer> ih :<c-u>execute "normal! ?^\\(==\\+\\\\|--\\+\\)$\r:nohlsearch\rkvg_"<cr>