Estoy trabajando en varios proyectos, cada uno de los cuales usa un estilo de sangría diferente (para varios tipos de archivos). Por ejemplo, 1 ficha por nivel de sangría, 2 o 4 espacios, etc. ¿Cómo puedo automatizar el cambio entre estos diferentes estilos? Normalmente prefiero la sangría con pestañas, pero estoy cansado de tener que escribir: establecer expandtabs todo el tiempo cuando se trabaja con código de sangría espacial. Las posibles soluciones incluirían cargar una parte de la configuración de vim basada en la ruta del archivo o alguna configuración en la raíz del proyecto. ¿Hay algún complemento para resolver esto de una manera elegante?¿Cómo puedo lograr una sangría específica del proyecto en vim?
Respuesta
- considerar la opción
cinoptions
ysofttabstop
opción (yexpandtab
, pero se sabe que). En su '~/.vimrc', definir entrada en el búfer de auto-comandos para cada directorio donde guarda las fuentes de algunos proyectos como:
augroup ProjectSetup au BufRead,BufEnter /path/to/project1/* set et sts=2 cindent cinoptions=... au BufRead,BufEnter /path/to/project2/* set noet sts=4 cindent cinoptions=... augroup END
Si el proyecto tiene mezcla de idiomas y necesita diferentes ajustes para a continuación, también se puede añadir extensiones como:
au BufRead,BufEnter /path/to/project1/*.{c,h} set noet sts=0 cindent cinoptions=... au BufRead,BufEnter /path/to/project1/*.py set et sts=4
utilizo el plugin localvimrc, que hace exactamente lo que está pidiendo:
A veces, cuando trabajas en diferentes proyectos, tienes el problema, que usan diferentes sangrías, expansión de pestañas, etc. Es necesario vimrc para cada proyecto que anula la configuración preferidas de ~/.vimrc
Sí, hay: Si está utilizando el Project Plugin, puede especificar un archivo cuyo contenido está siendo evaluado cada vez que se abra un archivo del proyecto (este archivo se llama in.vim
). El opuesto de in.vim
es out.vim
: este se ejecuta cada vez que abandona el proyecto.
Actualmente uso el plugin de proyecto, pero cambié a los autocomandos (vea la otra respuesta) para configurar las opciones específicas del proyecto (también configuré cosas como makeprg y demás). El problema con in/out.vim del plugin del proyecto es que no se ejecuta si primero ingresas un buffer no desde el plugin del proyecto, sino por ejemplo desde la lista quickfix (después de ': make' o': grep') o explícita (' : e%: rh' a menudo es bastante útil en C/C++). –
EditorConfig y es Vim plugin:
Lo que es EditorConfig?
EditorConfig ayuda a los desarrolladores a definir y mantener la codificación coherente de los estilos entre diferentes editores e IDE. El proyecto EditorConfig consiste en un formato de archivo para definir estilos de codificación y una colección de complementos de editor de texto que permiten a los editores leer el formato de archivo y se adhieren a los estilos definidos. Los archivos EditorConfig son fáciles de leer y funcionan muy bien con los sistemas de control de versiones.
Entre otras cosas, le permite establecer la sangría. Es muy sencillo y, lo que es más importante, es una forma estandarizada compatible con muchos editores e IDE-s diferentes, de modo que establecerá la sangría adecuada no solo para usted, sino probablemente para todas las personas que trabajen en un proyecto.
Solo tiene que crear un archivo .editorconfig
en la raíz del proyecto y Vim lo busca automáticamente (suponiendo que tenga el complemento instalado), estableciendo los valores adecuados.Archivo de configuración de ejemplo:
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.{js,html}]
indent_size = 2
[*.css]
indent_size = 4
- 1. ¿Cómo puedo lograr ThreadPool.Join?
- 2. ¿Cómo habilita la configuración de sangría de tabulación específica de archivo en VIM?
- 3. No puedo entender el complemento del proyecto en VIM
- 4. Haskell y Vim: sangría correcta
- 5. Insertar sangría para columnas en Vim
- 6. ¿Cómo puedo corregir una sangría incorrecta de Javascript en línea en Vim?
- 7. ¿Cómo obtengo una excelente sangría automática con Vim y Yaml?
- 8. sangría un montón de líneas en VIM
- 9. Al presionar "Inicio" en Vim en una línea con sangría
- 10. Vim Auto Sangría con nueva línea
- 11. Vim y la sangría con soportes/apoyos
- 12. Molesto de sangría con CSS en Vim
- 13. Formato y sangría HTML en Vim
- 14. ¿Cómo eliminar el resaltado de sangría en vim?
- 15. Cómo reparar la sangría automática rota en vim
- 16. ¿Cambiar a una pestaña específica en Vim como en Firefox?
- 17. ¿Por qué tener una RuntimeException específica del proyecto?
- 18. vim: C++ sangría de nuevo con #
- 19. Con vim, ¿cómo puedo usar autocmd para archivos en subdirectorios de una ruta específica?
- 20. ¿La sangría de Vim Python no funciona?
- 21. Reglas de sangría de vim (un) molestas
- 22. sangría automática VIM de archivos LaTeX defectuosos
- 23. Sangría en VIM con todos los archivos en la carpeta
- 24. Compilación de vim con una versión específica de Python
- 25. ¿Cómo puedo descomprimir una carpeta específica?
- 26. Sangría código por índice de columna de soporte en Vim?
- 27. Cómo deshabilitar la sangría de vim de la caja del interruptor?
- 28. ¿Cómo puedo personalizar un archivo con vim?
- 29. Vim: la línea actual de sangría (en blanco) e insertar
- 30. vim - reasignación >><< (comandos de sangría)
¿Puede sugerir una forma de distinguir entre idiomas según los tipos de archivos vim, no las extensiones de archivo? Me gusta tu respuesta, pero esta parte parece repetir partes de mi configuración. ¡Gracias! – VoY
@VoY: También existe el evento 'FileType' para autocomandos. Pero su patrón coincide con el tipo de archivo, por lo que debe verificar la ruta usted mismo. O puede poner el código en '~/.vim/after/ftplugin/ .vim', pero nuevamente debe verificar la ruta usted mismo. –