Vim 在<;expr>;诺雷马克?

Vim 在<;expr>;诺雷马克?,vim,Vim,我正在编写一个脚本,使用Tab键在弹出菜单中循环,我发现人们经常: 我什么时候需要添加反斜杠转义以确保它最兼容,还是该反斜杠在此上下文中没有任何意义?正如您所写的,\正在转义中的整个表达式,将其转换为正则字符串。从: 示例通常在符号中给出。有时候,这只是为了 清楚您需要键入的内容,但通常可以按字面意思键入,例如,使用 :map命令。这些规则是: 任何可打印的字符都是直接键入的,除了反斜杠和,这两种情况对我来说都不是这样的-如果我这样做:imap\,那么在插入模式下,它会用反斜杠直接输出\。如果我

我正在编写一个脚本,使用Tab键在弹出菜单中循环,我发现人们经常:


我什么时候需要添加反斜杠转义以确保它最兼容,还是该反斜杠在此上下文中没有任何意义?

正如您所写的,
\
正在转义
中的整个表达式,将其转换为正则字符串。从:

示例通常在
符号中给出。有时候,这只是为了 清楚您需要键入的内容,但通常可以按字面意思键入,例如,使用
: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>