如何在映射中转义 vim 关键字?

dot*_*hen 2 vim

另一个线程中,有人建议将这种极好的映射作为大写 SQL 关键字的一种方式:

noremap <leader>s <Esc>:s/\v<select>\|<from>\|<insert>\|<into>\|<table>\|<where>\|<delete>\|<limit>\|<order>\|<by>\|<asc>\|<desc>\|<set>\|<update>/\U\0/g<Return>
Run Code Online (Sandbox Code Playgroud)

但是,似乎<insert><delete>是 VIM 关键字。一个人如何逃脱他们?在他们之前的明显尝试是\行不通的!

谢谢。

qqx*_*qqx 5

在这种情况下,由于这发生在正则表达式中,您可以通过使用分组共享 <> 字符来分解这些序列来解决该问题:

noremap <leader>s <Esc>:s/\v<(select\|from\|insert\|into\|table\|where\|delete\|limit\|order\|by\|asc\|desc\|set\|update)>/\U\0/g<Return>
Run Code Online (Sandbox Code Playgroud)

更一般地,您可以<<Char-0x3c>, 0x3c 作为字符的 ASCII 值替换字符(所有字符或只是问题词之前的<字符)。