2009-05-19 106 views

Respuesta

35

Puede asignar la llave de apertura a su gusto:

:imap (()<left> 
+4

Los complementos mencionados en las otras respuestas tienen la ventaja de comportarse de forma "inteligente" cuando se escribe el cierre correspondiente ")". Si esto no es necesario, entonces también iré con el mapa directo de Straight. – user55400

+0

Algunos complementos también: - no se expanden dentro de los contextos de comentario y cadena, - definen una forma de rodear la selección con un par de corchetes, - inserta un marcador de posición/marcador para saltar el corchete de cierre (que es consistente con la mayoría complementos de expansión de fragmentos/plantillas). –

+0

¿Hay alguna manera de hacer eso solo al final de una línea? A veces es más molesto que útil, pero con esto, lo usaría con mucho gusto ... – alexpinho98

31

Intente utilizar AutoClose plugin.

+8

No se debe confundir con el otro, menos agresivo (y menos molesto, IMO), [AutoClose] (http: //www.vim. org/scripts/script.php? script_id = 2009) de Thiago Alves. –

+2

@AndrewMarshall +1, la versión que aparece es mucho menos molesta. Vine aquí buscando una alternativa a la respuesta de Mykola debido a sus peculiaridades. –

+0

FYI, Este plugin parece funcionar bien pero para mí introdujo el comportamiento '' laggy ''. Así que evítalo si te preocupas por esto. –

8

Hay muchos consejos y complementos sobre el tema. Eche un vistazo a relevant entry en el sitio de vimtips.

11

lo necesitaba también, y bastante bueno en algunos de los plug-ins:

AutoClose, http://www.vim.org/scripts/script.php?script_id=1849, es un poco agresivo.

pares simples, http://www.vim.org/scripts/script.php?script_id=2339, depende de Python. Si está en Linux, no es un problema, pero en Windows puede ser un problema emparejar la versión de Vim con el intérprete de Python que tiene.

Mi consejo sería ClosePairs, que puedes encontrar en http://www.vim.org/scripts/script.php?script_id=2373, que ha funcionado perfectamente para mí. Es simple y útil.

1

Hay un problema con el uso de esto (mediante el imap o uno de los scripts). No podrá repetir la edición completa utilizando el comando ..

e.g. (foo) with . only gets you foo, without the brackets.

Funciona bien si inserta los soportes normalmente, como dos caracteres.

3

Control hacia fuera este nuevo plugin: vim-autoclose by Townk. El AutoClose antes mencionado era agresivo, a veces comportándose de una manera no deseada.

13

La respuesta más simple es incluir un mapa. Ej .:

:inoremap (()<left> 

El problema es que lo que se necesita añadir una entrada para cada símbolo que desea cierra automáticamente ('{', '[' '"', etc.). Además, los plugins son normalmente más inteligentes, que ofrecen cosas como detectar el carácter "cierre" y no repetirlo.

el problema con la solución anterior y la mayoría de plugins, es que tienden romper la secuencia de deshacer (gundo alguien?), como se explica en :help ins-special-special .

Aquí está la lista de plugins que hacer lo que pides (de vimtips):

  • delimitMate por Israel Chauca Fuentes (configurable y no se rompe deshacer/rehacer/repetir, pero - Break iabbr) también en GitHub
  • AutoClose por Karl Guertin (auto-cierra caracteres codificados de forma rígida específicos, pero no se rompe deshacer/rehacer/repetición)
  • AutoClose por Thiago Alves (configurable, pero se rompe deshacer/rehacer/repetición)
  • auto-pairs pares Auto por Miao Jiang (configurable, pero se rompe deshacer/rehacer/repetición)
  • ClosePairs de Edoardo Vacchi (configurable, pero se rompe deshacer/rehacer/repetición)
  • smartinput por Kana Natsuno (configurable, pero se rompe deshacer/rehacer/repetir)

Además de vimtips, hay another nice explanation of the issue en la web.

+2

Para cualquier otra persona que encuentre esto en el futuro, acabo de empezar a usar pares automáticos, y a menos que entienda mal la terminología, no rompió mi deshacer o historial. ¡El mejor de esta lista! ¡También maneja la eliminación de pares en el retroceso! – Lethjakman

+0

¿Qué versión de Vim? La última vez que revisé, todavía no había una solución que permitiera deshacer/rehacer/repetir el trabajo correctamente con el cierre automático en Vim 7.4 y posteriores. Algunos plugins tenían un hack usando setline() que funcionaba en las versiones anteriores de Vim. – Ben

5

Actualmente estoy usando auto-pairs y funciona bastante bien.

Los problemas del plugin de deshacer/rehacer/repetir parecen persistir entre algunos de los complementos enumerados anteriormente, pero no creo que sea un problema (bueno, al menos no para mí en este momento).

Solo una advertencia, no pude utilizar: helptags para generar el archivo de ayuda con este complemento como en el momento de escribir esto.

0

Hay un nuevo plugin Cohama:

lexima.vim (github)

(todavía no está en vim.org)

Este plugin es compatible con el comando .!
Afaik, este es el único complemento que lo soporta.

También funciona la secuencia de deshacer/rehacer.

Cuestiones relacionadas