Al editar archivos .scm
, sería genial si Vim pusiera automáticamente la llave de cierre )
tan pronto como inicie (
. ¿Cómo hago esto?¿Cómo consigo que Vim ponga automáticamente las llaves de cierre?
Respuesta
Puede asignar la llave de apertura a su gusto:
:imap (()<left>
Intente utilizar AutoClose plugin.
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. –
@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. –
FYI, Este plugin parece funcionar bien pero para mí introdujo el comportamiento '' laggy '
Hay muchos consejos y complementos sobre el tema. Eche un vistazo a relevant entry en el sitio de vimtips.
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.
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.
Puede intentar descargar el siguiente plugin de AutoClose : Inserts matching bracket, paren, brace or quote
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.
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.
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
¿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
https://github.com/vim-scripts/Auto-Pairs
probado este plug-in para undu rehacer. 2013 Simplemente funciona. También con el plugin python-mode.
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.
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.
- 1. ¿Cómo puedo obtener emacs para insertar llaves de cierre automáticamente?
- 2. llaves de cierre automático en Emacs?
- 3. ¿Cómo prevenir el cierre automático de las llaves en ReSharper?
- 4. ¿Cómo hacer que XMLDocument no ponga espacios en las etiquetas de cierre automático?
- 5. ¿Cómo se encuentran y se reemplazan las llaves {} en vim?
- 6. ¿Cómo se definen las sangrías en vim basadas en llaves?
- 7. Enrollar automáticamente las líneas largas en VIM
- 8. ¿Qué significa paréntesis después de las llaves?
- 9. .antes de() /. After() sin que se cierre automáticamente
- 10. Las llaves de autocompletar en Visual Studio 2012
- 11. ¿Cómo impido que Vim cree comentarios automáticamente al presionar INTRO?
- 12. ¿Cómo consigo vim para autocompletar mi código jQuery?
- 13. ¿Las llaves en Python?
- 14. insertar comentarios automáticamente en Vim
- 15. ¿Cómo puedo hacer que Hibernate ponga comentarios en las tablas/campos que crea?
- 16. Configuración del tema de color vim para llaves resaltadas
- 17. ¿Cómo hago que Visual Studio genere automáticamente llaves para un bloque de funciones?
- 18. ¿Cómo hago que Dreamweaver me muestre las etiquetas de cierre?
- 19. Cómo sangrar automáticamente un bloque en vim
- 20. Haciendo que Django se ponga verde
- 21. Fijaciones de rieles: ¿cómo configura las llaves foráneas?
- 22. ¿Cómo consigo que Vim coincida con una línea que no comienza con un número de siete dígitos?
- 23. ¿Hay algún complemento para que vim pueda importar automáticamente las bibliotecas de Python?
- 24. ¿Cómo previene que Visual Studio 2012 cierre automáticamente los archivos de vista previa?
- 25. Insertar texto automáticamente en vim
- 26. Las llaves en T-SQL
- 27. Retirar un par de paréntesis, corchetes o llaves en Vim
- 28. ¿Cómo consigo HTML Tidy para no poner nueva línea antes de cerrar las etiquetas?
- 29. ¿Cómo consigo que Outlook procese una actualización de evento?
- 30. Cómo alinear automáticamente las líneas de asignación de variables de python en vim
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
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). –
¿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