Tecla Tabulación == 4 espacios y sangría automática después de llaves en Vim
-
04-07-2019 - |
Pregunta
¿Cómo hago vi - Vim nunca use pestañas (¡la conversión de espacios en pestañas, mala!), hace que la tecla de tabulación == 4 espacios, e indente automáticamente el código después de curly bloques de llaves como Emacs hace?
Además, ¿cómo guardo estas configuraciones para que nunca tenga que ingresarlas nuevamente?
He visto otras preguntas relacionadas con esto, pero siempre parece estar un poco alejado de lo que quiero.
Solución
Como se ha señalado en un par de respuestas a continuación, el método preferido ahora NO es usar smartindent, sino el siguiente (en su . vimrc ):
filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab
En su .vimrc: file:
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
Los archivos de ayuda tardan un poco en acostumbrarse, pero cuanto más lees, mejor se pone Vim:
:help smartindent
Aún mejor, puedes incrustar estas configuraciones en tu fuente para portabilidad:
:help auto-setting
Para ver su configuración actual:
:set all
Como graywh señala en los comentarios, smartindent ha sido reemplazado por cindent que " Funciona de manera más inteligente " ;, aunque aún principalmente para lenguajes con sintaxis tipo C:
:help C-indenting
Otros consejos
Relacionado, si abres un archivo que usa tanto las pestañas como los espacios, asumiendo que lo tienes
set expandtab ts=4 sw=4 ai
Puede reemplazar todas las pestañas con espacios en todo el archivo con
:%retab
La mejor manera de obtener una sangría específica para un tipo de archivo es usar la sangría del complemento del tipo de archivo en
en su vimrc. Luego puede especificar cosas como set sw = 4 sts = 4 et
en .vim / ftplugin / c.vim, por ejemplo, sin tener que hacer que sean globales para todos los archivos que se están editando y otros que no sean C las sintaxis de tipo también se sangrarán correctamente (incluso lisps) .
Para tener pestañas de 4 espacios en la mayoría de los archivos, caracteres de tabulación de 8 anchos en Makefiles y sangría automática en varios archivos, incluido C / C ++, ponga esto en su archivo ~ / .vimrc
:
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Use filetype detection and file-based automatic indenting.
filetype plugin indent on
" Use actual tab chars in Makefiles.
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif
" For everything else, use a tab width of 4 space chars.
set tabstop=4 " The width of a TAB is set to 4.
" Still it is a \t. It is just that
" Vim will interpret it to be having
" a width of 4.
set shiftwidth=4 " Indents will have a width of 4.
set softtabstop=4 " Sets the number of columns for a TAB.
set expandtab " Expand TABs to spaces.
En muchos sistemas Linux, como Ubuntu, el archivo .vimrc
no existe de forma predeterminada, por lo que se recomienda crearlo primero.
No utilice el archivo .viminfo
que existe en el directorio de inicio. Se utiliza para un propósito diferente.
Paso 1: ve a tu directorio de inicio
cd ~
Paso 2: crea el archivo
vim .vimrc
Paso 3: agregue la configuración mencionada anteriormente
filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab
Paso 3: Guarda el archivo, presionando Shift + ZZ .
La forma recomendada es usar sangría basada en tipos de archivo y solo usar smartindent y cindent si eso no es suficiente.
Agregue lo siguiente a su .vimrc
set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on
Espero que ayude como una respuesta diferente.
edita tu ~ / .vimrc
$ vim ~/.vimrc
añadir las siguientes líneas:
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
Del wiki de VIM :
:set tabstop=4
:set shiftwidth=4
:set expandtab
La sangría automática se basa en el modo de sintaxis actual. Sé que si estás editando Foo.java, al ingresar un {
y al presionar Enter se sangra la siguiente línea.
En cuanto a las pestañas, hay dos configuraciones. Dentro de Vim, escriba dos puntos y luego " defina tabstop = 4 " que establecerá las pestañas para mostrar como cuatro espacios. Vuelva a presionar dos puntos y escriba " set expandtab " que insertará espacios para pestañas.
Puedes poner estas configuraciones en un directorio .vimrc (o _vimrc en Windows) en tu directorio de inicio, por lo que solo tienes que escribirlas una vez.