O que significa `<Bar>`?

23

Ao responder uma pergunta agora , mencionei o uso de um mapeamento de teclas no modo normal que pode ser encontrado em vim.wikia.com. No meio da explicação do mapeamento de chaves, percebi que não tinha ideia do que <Bar>significava. O que isso significa?

Tentei substituí-lo por um pipe |, com e sem espaços antes, ao redor e depois dele, mas cada um quebrou meu .vimrcarquivo com a seguinte mensagem de erro:

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

Respostas:

33

É o código para o caractere pipe : |. O canal é usado da maneira que o ponto-e-vírgula é usado em linguagens no estilo C, como um separador de instrução. Você não pode usá-lo diretamente em um mapeamento, pois isso seria visto como marcando o final do mapeamento. Portanto, o código deve ser usado.

Existem exceções, como definições de autocmd, em que a barra delimita as ações do autocmd, mas não a definição em si.

De :help :bar:

'|' pode ser usado para separar comandos, para que você possa dar vários comandos em uma linha. Se você deseja usar '|' em um argumento, preceda-o com '\'.

e de :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
muru
fonte
6

Se você digitar

:help <Bar>

você vai ler isso

<Bar>           vertical bar            |       124     <Bar>
Bernhard
fonte
4

Eu gostaria de acrescentar que no modo normal, o |comando (que tem de ser substituído com <bar>, \|ou ^V|enquanto remapeamento que, como mencionado em outras respostas) permite que você vá a uma coluna de tela específico na linha atual.

Por exemplo, a digitação 5|irá para a coluna 5 da tela, como na imagem abaixo:

insira a descrição da imagem aqui

Isso é o que os |meios por padrão no vim.

ha7ilm
fonte