En mi .vimrc tengo una configuración de pestañas genéricas de dos espacios, y me gustaría anular eso en un idioma básico (es decir, cuatro para Python, etc., de lo contrario, use el valor predeterminado), pero estoy teniendo problemas para encontrar algún buen ejemplo de esto.¿Cómo configuro diferentes configuraciones de pestañas para diferentes idiomas en Vim?
Respuesta
sólo hay que poner la configuración en el archivo plugin filetype ~/.vim/ftplugin/LANGUAGE.vim. Mi ~/.vim/ftplugin/perl.vim contiene las líneas:
"
" ---------- tabulator/shiftwidth --------------------
" Set tabulator and shift width to 4 (Perl Style Guide)
"
setlocal tabstop=4
setlocal shiftwidth=4
"
Estos ajustes serán automáticamente en efecto para cada archivo con el tipo de archivo 'Perl' (nuevo o existente).
Normalmente, lo que hace es configurar un archivo especial de tipo vimrc con la configuración para un idioma en particular, y luego usar comandos automáticos en su .vimrc principal para ejecutar el vimrc especial cuando sea necesario. Aquí está mi configuración para Haskell (.hs
, etc.) archivos:
autocmd! BufNewFile,BufReadPre,FileReadPre *.hs so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre *.hsc so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre *.lhs so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre *.cabal so ~/.vim/haskell.vim
Mi ~/.vim/haskell.vim
hace cosas por el estilo "expandtab set" para utilizar espacios en lugar de tabuladores, y todo tipo de otra magia para formatear y cosas así. A menudo puede descargar buenas versiones de estos para varios idiomas desde http://vim.org y otros sitios.
Tenga en cuenta que puede hacer mucho más que simplemente cambiar la configuración de vim. Por ejemplo, puede ejecutar el archivo a través de un filtro antes y después de la edición:
" Edit gpg-encrypted ascii-armoured files
autocmd! BufReadPre,FileReadPre *.asc set bin
autocmd BufReadPost,FileReadPost *.asc '[,']!gpg -q -d
autocmd BufReadPost,FileReadPost *.asc set nobin
autocmd! BufWritePre,FileWritePre *.asc set bin
autocmd BufWritePre,FileWritePre *.asc '[,']!gpg -e
autocmd BufWritePost,FileWritePost *.asc undo
autocmd BufWritePost,FileWritePost *.asc set nobin
Muy bien, gracias. Voy a ir con esta solución en lugar de la basada en ftplugin, porque esto parece más limpio en el caso de que tenga múltiples extensiones para archivos que usan el mismo lenguaje (como lo ha hecho en su ejemplo de Haskell). –
Hay un pequeño precio a pagar. Los comandos de origen (por ejemplo, so ~/.vim/haskell.vim) se ejecutarán cada vez que cambie a dicho búfer. –
Esta no es la solución correcta. La solución correcta consiste en utilizar ftplugins (no es necesario escribir y mantener los autocomandos nosotros mismos), y (muy importante) en el uso de la configuración local. -> s #: establecer tabstop = #: setlocal tabstop = #. Ver la respuesta de fgm. Si su extensión no es reconocida como haskell, entonces actualice su base de tipos de archivos. ¿No desea que vim aplique el resaltado de sintaxis correcto a sus archivos? –
Mi respuesta se basa en this tip en la Wiki VIM. Esta respuesta utiliza el directorio "después" para que no tenga que ensuciar con los archivos de complemento suministrados para diferentes tipos de archivos.
Por ejemplo, para especificar la configuración personalizada para los archivos de Python, crea un archivo llamado python.vim
para mantener la configuración de Python:
setlocal expandtab
setlocal shiftwidth=4
setlocal softtabstop=4
Coloque este archivo en cualquiera
~/.vim/after/ftplugin
(Linux)$HOME/vimfiles/after/ftplugin
(Windows)
Y, por último, debe tener esto en su .vimrc
(Linux) o _vimrc
(Windows):
filetype plugin indent on
¿Por qué el voto a favor? –
Por error, si editas tu respuesta, puedo volver a votarla. –
@BjornTipling - existe esa edición que solicitó hace un año. :) –
Estas otras respuestas parecen demasiado compleja. En lugar de perder el tiempo con más directorios y archivos en su árbol ~/.vim, simplemente agregue lo siguiente a su ~/.vimrc.
autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4
(que puede ser l33t y abreviar los parámetros a et ts=4 sw=4 sts=4
). He encontrado esto en Setting Vim whitespace preferences by filetype
La mejor respuesta OMI, gracias. – bryant
Además, más al punto que algunos otros – cloying
+1 para la opción de configurarlo desde vimrc. Se vuelve más importante cuando se usa un administrador de paquetes vim (a la vundle) y no se desea comenzar a agregar configuraciones en lugares oscuros ... –
utilizo el plugin editor config y añadir un archivo .editorconfig a todos mis proyectos - que le permitirá definir la configuración de sangrado diferentes para diferentes proyectos que utilizan el mismo lenguaje de programación que pueden ser útiles tan a menudo diferentes proyectos en el mismo idioma tienen diferentes estándares de codificación.
se puede ver un ejemplo de los tipos de configuración se pueden establecer aquí: http://editorconfig.org/
Esto es genial porque otros editores también admiten el mismo archivo .editorconfig (átomo, sublime text, webstorm, visualstudio, etc, etc.), por lo que funciona bien en un equipo o repositorio donde las personas utilizan todos los diferentes sabores de los editores. – Charlino
- 1. Cómo usar diferentes configuraciones de pestañas en diferentes proyectos en Visual Studio
- 2. strtotime ¿Con diferentes idiomas?
- 3. Diferentes idiomas para me gusta botón
- 4. Hacer referencia a diferentes conjuntos en diferentes configuraciones
- 5. Visual Studio: DLL diferentes para configuraciones
- 6. validación de jQuery en diferentes idiomas
- 7. Cómo utilizar diferentes archivos en un proyecto para diferentes configuraciones de compilación - Visual Studio C# .net
- 8. Xcode: ¿Configurando GCC_PREPROCESSOR_DEFINITIONS para diferentes configuraciones de compilación?
- 9. Pestañas de diferentes tamaños en Android
- 10. Registrando en dos archivos con configuraciones diferentes
- 11. Imprimir Época de Época en Diferentes Idiomas
- 12. ¿Cómo usar un nombre de conjunto diferente para diferentes configuraciones?
- 13. Despliegue de Python en Elastic Beanstalk con diferentes configuraciones para diferentes entornos
- 14. ¿Cómo configuro diferentes colores para texto y subrayado en JTextPane?
- 15. Usando diferentes idiomas en un proyecto
- 16. ¿Cómo usar diferentes archivos .settings para diferentes entornos en .NET?
- 17. ZF2: ¿cómo implementar diferentes configuraciones para producción, montaje, etc.?
- 18. PyQt: ¿Cómo configuro diferentes tamaños de encabezado para encabezados individuales?
- 19. ¿Puedo compartir configuraciones para IntelliJ Idea en diferentes proyectos?
- 20. cómo obtener cadenas de diferentes configuraciones regionales en Android?
- 21. Identificador de paquete diferente para configuraciones de compilación diferentes
- 22. ¿Son mejores las diferentes herramientas de control de versiones para diferentes idiomas?
- 23. Cómo probar la unidad con diferentes configuraciones en Django?
- 24. Personalización de formateadores java.text para diferentes configuraciones regionales
- 25. ¿Visualización de fecha en diferentes configuraciones regionales en Java?
- 26. ¿Cómo hago que vim abra todos los archivos que coincidan con un patrón en diferentes pestañas?
- 27. maven: Ejecutando las mismas pruebas para diferentes configuraciones
- 28. Diferentes archivos security.yml para diferentes entornos
- 29. Diferentes fragmentos para diferentes orientaciones
- 30. Abrir diferentes pestañas del mismo libro de trabajo en diferentes ventanas en Excel 2010
Es triste que todavía tenemos que tener ftplugin para hacer esto. – shabunc
¿Por qué? Este enfoque parece más claro que otros mencionados en otras respuestas. – flyer88
ftplugin es un gran enfoque para este – connorbode