¿Qué significa `<Bar>`?

23

Al responder una pregunta hace un momento , mencioné el uso de una asignación de teclas en modo normal que se puede encontrar en vim.wikia.com. Mientras explicaba el mapeo clave, me di cuenta de que no tenía idea de lo que <Bar>significaba. Qué significa eso?

Intenté reemplazarlo con una tubería |, con y sin espacios antes, alrededor y después, pero cada uno rompió mi .vimrcarchivo con el siguiente mensaje de error:

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

Respuestas:

33

Es el código para el carácter de barra vertical : |. La tubería se usa de la misma forma que el punto y coma en lenguajes de estilo C, como un separador de enunciados. No puede usarlo directamente en una asignación, ya que se consideraría que marca el final de la asignación. Por lo tanto, el código debe usarse en su lugar.

Hay excepciones a esto, como las definiciones de autocmd, donde la barra delimita las acciones del autocmd, pero no la definición en sí.

De :help :bar:

'|' se puede usar para separar comandos, por lo que puede dar múltiples comandos en una línea. Si quieres usar '|' en un argumento, preceda con '\'.

y 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
fuente
6

Si escribes

:help <Bar>

leerás eso

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

Me gustaría agregar que en el modo normal, el |comando (que debe ser sustituido con <bar>, \|o ^V|al reasignarlo, como se menciona en otras respuestas) le permite ir a una columna de pantalla específica en la línea actual.

Por ejemplo, escribir 5|irá a la columna 5 de la pantalla, como en la imagen a continuación:

ingrese la descripción de la imagen aquí

Eso es lo que |significa por defecto en vim.

ha7ilm
fuente