¿Cuál es la forma más fácil de insertar en dash en Vim?

33

Para insertar un guión , utilizo ^v u 2014siete teclas. hay una manera mas facil? (Estaba mirando los dígrafos y no encontré un guión allí).

Tomás Tomecek
fuente
44
FYI, U + 2014 es un EM DASH. U + 2013 es un EN DASH. fileformat.info/info/unicode/char/2014/index.htm , fileformat.info/info/unicode/char/2013/index.htm
Quincy Bowers
77
Si está utilizando X11, diría XCompose ... Como esto funcionará en todas sus aplicaciones, y no solo en Vim. O si está en OSX o Windows, las instalaciones que proporciona ese sistema operativo.
Martin Tournoij
Quizás no sea la forma más fácil , pero tiendo a usarlo <Ctrl-Shift-U>2013<Space>porque funciona en todas partes. Algunos códigos clave son muy útiles (uso principalmente U + 2013, U + 2014, U + 2026, U + 2212, U + 2192, U + B0; - / - /… / - / → / °).
wchargin
Por curiosidad, ¿cómo se muestra en guiones? AFAIK, no hay forma de mostrar correctamente las fuentes de ancho no fijo (es decir, con anchos de caracteres y kerning no uniformes), por lo que los guiones largos y largos siempre se parecen exactamente a guiones que se extienden hasta el borde extremo del límite de caracteres. ¿No te importa tener una desconexión extrema entre cómo se muestra el personaje en Vim y cómo se representa en otro lugar?
Kyle Strand
2
Estoy con @Carpetsmoker: Compose - - -para un em-dash, Compose - - .para un en-dash. Componer es mágico, especialmente si lo mapea en el Bloqueo de mayúsculas que de otro modo no se usaría.
Rmano

Respuestas:

42

Puede usar dígrafos: Ctrl+k-N(con mayúscula N)

En el modo Insertar, los digrafos se ingresan Ctrl+kseguidos de una secuencia de dos caracteres. Para en-dash, la secuencia es -N.

Como Quincy señaló, U+2014es em-dash. Si desea ingresar eso usando dígrafos, la secuencia es -M.

tommcdo
fuente
Del mismo modo, se puede insertar un EM DASH con <Ck> -M.
Quincy Bowers
U+2014no es en-dash? ¡toda mi vida era una mentira! Editar: ahora lo entiendo: mi fuente de terminal (Inconsolata) muestra ambos guiones de la misma manera.
Tomás Tomecek
3
Para llegar a esta respuesta: hexadecimal 2013 es 8211 decimal. Use el :digraphscomando para mostrar todos los dígrafos y busque 8211.
200_success
10

Si no hay un dígrafo predefinido o si desea una secuencia de teclas más memorable, puede definir los dígrafos en su vimrc. Por ejemplo, el siguiente definirá dos dígrafos para en dash (8211) y em dash (8212) que reflejan sus secuencias XCompose.

digraph -. 8211 -- 8212

El :digraphcomando espera que el valor se especifique en decimal en lugar de hexadecimal, por lo que es 8211 para en dash en lugar de 2013.

jamessan
fuente
El dígrafo en dash está integrado.
200_success
1
@ 200_success No dije que no. :) Las opciones de dígrafo de Vim no siempre se alinean con las más estándar, por lo que es útil saber cómo definir su propio dígrafo, incluso si ya existe.
jamessan
8

La forma estándar de insertar un guión en Vim es usar un dígrafo, como explicó tommcdo .

Sin embargo, encuentro dígrafos en general, y en particular este ( Ctrl+k, -, Shift+N) bastante incómoda de escribir. Para una entrada más rápida de guiones, puede agregar el siguiente par de asignaciones de modo de inserción a un archivo de tipo de archivo, como .vim/after/ftplugin/markdown.vim.

Para guiones en / em, respectivamente:

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- —

Nota: los <buffer>medios de esta asignación solo se aplicarán a los archivos Markdown. Esto es necesario porque hay algunos contextos (por ejemplo, programación) donde no quiero que dos guiones sean reemplazados por guiones.

Estos mapeos aprovechan el hecho de que en los contextos que los uso habitualmente, los guiones están rodeados de espacios y los guiones no . * Por lo tanto, el uso de estas asignaciones significa que puedo usar exactamente las mismas pulsaciones de teclas en los editores de texto menos capaces que a veces me veo obligado a usar y aún así obtener un resultado razonable. ** **

De hecho, uso una solución un poco más complicada que la anterior, porque, por razones tipográficas, me gusta rodear mis guiones con espacios para el cabello . Tenerlos en el Markdown lo hace menos legible, pero afortunadamente, Vim tiene una solución para esto, con su función "ocultar", que le permite ocultar ciertos elementos de sintaxis cuando el cursor está en una línea diferente: ***

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- &#8202;—&#8202;

syntax match entity_hairspace "&#8202;" conceal
setl conceallevel=2

* Si alguna vez necesito usar un guión sin espacio, entonces simplemente puedo presionar la tecla de retroceso después de escribir el mapeo.
** Si generalmente no usa guiones como este, o si nunca se aventura fuera de Vim, podría usar algo más para activar las asignaciones: por ejemplo, --.y ---. Si usa otros desencadenantes, también puede colocar esto directamente en su .vimrc y eliminar las <buffer>opciones.
*** También puede usar un carácter ccharoculto para reemplazar elementos de sintaxis con un solo carácter, en lugar de ocultarlos por completo. Si le preocupan los problemas de codificación, puede usar esto para que Vim muestre &ndash;entidades HTML en el archivo como guiones.

Rico
fuente
¿Entonces usas guiones en Vim? ¿No parecen un poco extraños, ya que solo se les da un ancho de columna? ¿Conoces algún truco para hacer que los guiones em realmente ocupen una buena cantidad de espacio, quizás el valor de dos columnas?
Kyle Strand
@KyleStrand ¿Qué tan hacky quieres ser? Pruebe esto: set conceallevel=1 | syntax match longdash '—' conceal cchar=-(Tenga en cuenta que el primer guión en este comando es un guión em, y el segundo es un guión de ancho completo menos).
Rico
No veo una diferencia en la pantalla, o veo por qué eso haría que la pantalla ocupara dos columnas. ¿Por casualidad malinterpretaste mi pregunta, o es probable que esté malinterpretando tu sugerencia?
Kyle Strand
... en realidad, no sé nada sobre la especificación de sintaxis de Vim. ¿El syntax matchcomando incluso funciona fuera del contexto de un archivo de sintaxis?
Kyle Strand
@KyleStrand Entendí tu pregunta. ¿Intentaste copiar esa línea en tu vimrc? ¿O simplemente ejecutarlo en Vim? :)
Rico
3

En mi teclado francés AZERTY Mac, puedo insertar un guión con Alt+ -. Su millaje obviamente puede variar.

romainl
fuente
2
Alt+-(o más bien Option+-ser pedante) es un atajo específico de Mac. Funciona en todas partes en OS X, pero no está relacionado con vi o vim.
ash108
1
Funciona en MacVim, pero en Terminal vim actúa como [Esc] seguido de -, cambiando así al modo Normal y colocando el cursor al comienzo de la línea anterior.
200_success
3

Instale mi complemento Unicode , ingrese Vim y escriba DASH seguido de CtrlXCtrlZpara activar la finalización Unicode.

ingrese la descripción de la imagen aquí

(Tenga en cuenta el -N en la descripción que muestra el dígrafo para ingresar ese carácter)

Christian Brabandt
fuente
0

Inspirado por la gran respuesta de Rich, agregué las siguientes líneas a mi vimrc:

" For en/em dashes, respectively
autocmd FileType markdown imap -- –
autocmd FileType markdown imap --- —

Funciona como un regalo!

Will Wright
fuente
0

Para un guión, un digrafo es la mejor manera de hacerlo, como se sugiere en varias otras respuestas. Pero para los caracteres unicode arbitrarios, otra forma es usar ^Ven modo de inserción (ver :he i_CTRL-V_digit).

Para un guión que sería, por ejemplo ^Vu2013.

tembloroso
fuente
¡Ahora me doy cuenta de que esto es realmente lo que el OP ya estaba haciendo! (Aunque en dash es 2013, no 2014, ese es em dash.) Sin embargo, creo que esto puede ser bueno tener en algún lugar en la pila de respuestas.
temblor