Pregunta Tecla de tabulación == 4 espacios y sangría automática después de las llaves en Vim


¿Cómo hago vi-Empuje nunca use pestañas (convirtiendo espacios en pestañas, ¡mal!), hace que la tecla de tabulación == 4 espacios, y automáticamente sangría el código después de bloques de llaves como Emacs ¿hace?

Además, ¿cómo guardo estas configuraciones para que nunca tenga que ingresarlas de nuevo?

He visto otras preguntas relacionadas con esto, pero siempre parece estar un poco alejado de lo que quiero.


1054
2017-10-24 17:41


origen


Respuestas:


Como se ha señalado en un par de respuestas a continuación, el método preferido ahora NO es usar smartindent, sino usar lo siguiente (en .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 tus .vimrc: archivo:

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 obtiene Vim:

:help smartindent

Aún mejor, puede incorporar estas configuraciones en su fuente para la 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 más inteligentemente", aunque sigue siendo principalmente para lenguajes con sintaxis tipo C:

:help C-indenting


1573
2017-10-24 17:45



Relacionado, si abre un archivo que usa tanto pestañas como espacios, suponiendo que tiene

set expandtab ts=4 sw=4 ai

Puede reemplazar todas las pestañas con espacios en todo el archivo con

:%retab

199
2017-11-27 05:42



La mejor forma de obtener una sangría específica de tipo de archivo es usar filetype plugin indent on en tu vimrc. Entonces puedes especificar cosas como set sw=4 sts=4 et en .vim / ftplugin / c.vim, por ejemplo, sin tener que convertirlos en globales para todos los archivos que se editen y otras sintaxis de tipos que no sean C también se sangrarán correctamente (incluso cecea).


83
2018-01-04 21:09



Para tener pestañas de 4 espacios en la mayoría de los archivos, tabulación real de 8 pestañas en Makefiles, y sangrado automático en varios archivos, incluido C / C ++, ponga esto en su ~/.vimrc archivo:

" 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.

42
2018-01-24 02:42



En muchos sistemas Linux, como Ubuntu, el .vimrc el archivo no existe de manera predeterminada, por lo que se recomienda que lo cree primero.

No use el .viminfo archivo que existe en el directorio de inicio. Se usa 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 indicada anteriormente

filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab

Paso 3: guarde el archivo, presionando Cambio + ZZ.


39
2017-08-04 13:26



La forma recomendada es usar sangría basada en tipo 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.


26
2017-11-18 19:08



Desde el VIM wiki:

:set tabstop=4
:set shiftwidth=4
:set expandtab

9
2017-10-08 01:26



edite su ~ / .vimrc

$ vim ~/.vimrc

agregue las siguientes líneas:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

9
2017-10-24 17:48



El autoguiado se basa en el modo de sintaxis actual. Sé que si estás editando Foo.java, entonces ingresas un { y golpeando Entrar sangra la siguiente línea.

En cuanto a las pestañas, hay dos configuraciones. Dentro de Vim, escriba dos puntos y luego "establecer tabulación = 4", que configurará las pestañas para que se muestren como cuatro espacios. Pulse dos puntos de nuevo y escriba "set expandtab" que insertará espacios para las pestañas.

Puede poner estas configuraciones en .vimrc (o _vimrc en Windows) en su directorio de inicio, por lo que solo debe escribirlas una vez.


7