<Bar>是什么意思?


23

在刚才回答一个问题时,我提到了使用可在vim.wikia.com上找到的普通模式键映射。在解释键映射的过程中,我意识到我不知道这<Bar>意味着什么。这是什么意思?

我尝试用pipe替换它|,在它之前,周围和之后带有空格,但每个空格都破坏了我的.vimrc文件,并显示以下错误消息:

Error detected while processing /home/bottomsc/.vimrc:
line  173:
E488: Trailing characters: :nohl<CR>

Answers:


33

这是竖线字符的代码:|。管道的使用方式与C样式语言中的分号一样,用作语句分隔符。您不能直接在映射中使用它,因为它将被视为标记映射的结束。因此,必须改为使用代码。

对此有一些例外,例如autocmd定义,其中的竖线限制了autocmd的动作,但没有定义定义本身。

来自:help :bar

'|' 可用于分隔命令,因此您可以在一行中给出多个命令。如果要使用“ |” 在参数中,在其前面加上“ \”。

和来自:help map_bar

                                                            *map_bar*
Since the '|' character is used to separate a map command from the next
command, you will have to do something special to include  a '|' in {rhs}.
There are three methods:
   use       works when                    example      ~
   <Bar>     '<' is not in 'cpoptions'     :map _l :!ls <Bar> more^M
   \|        'b' is not in 'cpoptions'     :map _l :!ls \| more^M
   ^V|       always, in Vim and Vi         :map _l :!ls ^V| more^M


4

我想补充一点,在正常模式下,该|命令(必须替换为<bar>\|或者^V|在重新映射它时,如其他答案所述)允许您转到当前行中的特定屏幕列。

例如,键入5|将转到屏幕第5列,如下图所示:

在此处输入图片说明

这就是|vim中默认的方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.