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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top