Vim 在<;expr>;诺雷马克?
我正在编写一个脚本,使用Tab键在弹出菜单中循环,我发现人们经常:Vim 在<;expr>;诺雷马克?,vim,Vim,我正在编写一个脚本,使用Tab键在弹出菜单中循环,我发现人们经常: 我什么时候需要添加反斜杠转义以确保它最兼容,还是该反斜杠在此上下文中没有任何意义?正如您所写的,\正在转义中的整个表达式,将其转换为正则字符串。从: 示例通常在符号中给出。有时候,这只是为了 清楚您需要键入的内容,但通常可以按字面意思键入,例如,使用 :map命令。这些规则是: 任何可打印的字符都是直接键入的,除了反斜杠和,这两种情况对我来说都不是这样的-如果我这样做:imap\,那么在插入模式下,它会用反斜杠直接输出\。如果我
我什么时候需要添加反斜杠转义以确保它最兼容,还是该反斜杠在此上下文中没有任何意义?正如您所写的,
\
正在转义
中的整个表达式,将其转换为正则字符串。从:
示例通常在
符号中给出。有时候,这只是为了
清楚您需要键入的内容,但通常可以按字面意思键入,例如,使用
:map
命令。这些规则是:
,这两种情况对我来说都不是这样的-如果我这样做:imap\
,那么在插入模式下,它会用反斜杠直接输出\
。如果我执行了:imap\
并尝试使用它,则会显示无效表达式:\
。如果这有什么不同的话,我就在Vim 8上。@RillyR是的,我的例子是关于你的第一个案例。我将编辑我的答案以包含您的
属性的使用。好的,我找到了cpoptions
默认包含反斜杠标志,使“\`成为文字字符而不是转义字符。删除它可以显示差异。谢谢@我很乐意帮忙。对于您提到的cpoptions
标志(B
),您可以通过转义
而不是```来确保您的命令兼容。
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
inoremap <expr> <CR> pumvisible() ? "<C-y>" : "<C-g>u<CR>"
:imap <C-H> \<yes>