Que signifie «<Bar>»?

23

En répondant à une question tout à l'heure , j'ai mentionné l'utilisation d'un mappage de touches en mode normal qui peut être trouvé sur vim.wikia.com. Au milieu d'expliquer la cartographie clé, j'ai réalisé que je n'avais aucune idée de ce <Bar>que cela signifiait. Qu'est-ce que ça veut dire?

J'ai essayé de le remplacer par un tuyau |, avec et sans espaces avant, autour et après, mais chacun a cassé mon .vimrcfichier avec le message d'erreur suivant:

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

Réponses:

33

Il est le code pour le caractère de conduite : |. Le canal est utilisé comme le point-virgule est utilisé dans les langages de style C, comme séparateur d'instructions. Vous ne pouvez pas l'utiliser directement dans un mappage, car il serait considéré comme marquant la fin du mappage. Par conséquent, le code doit être utilisé à la place.

Il existe des exceptions à cela, telles que les définitions autocmd, où la barre délimite les actions de l'autocmd, mais pas la définition elle-même.

De :help :bar:

«|» peut être utilisé pour séparer les commandes, vous pouvez donc donner plusieurs commandes sur une seule ligne. Si vous souhaitez utiliser '|' dans un argument, faites-le précéder de '\'.

et 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
la source
6

Si vous tapez

:help <Bar>

tu liras ça

<Bar>           vertical bar            |       124     <Bar>
Bernhard
la source
4

Je voudrais ajouter qu'en mode normal, la |commande (qui doit être remplacée par <bar>, \|ou ^V|tout en la remappant, comme mentionné dans d'autres réponses) vous permet d'accéder à une colonne d'écran spécifique dans la ligne actuelle.

Par exemple, la saisie 5|ira à l'écran de la colonne 5, comme dans l'image ci-dessous:

entrez la description de l'image ici

C'est ce que |signifie par défaut dans vim.

ha7ilm
la source