Redefine la pestaña como 4 espacios
Mi configuración actual asume 8 espacios; ¿cómo podría redefinirlo?
9 answers
Depende de lo que quieras decir. ¿Desea que los caracteres de tabulación reales en su archivo aparezcan 4 espacios de ancho, o por "tabulación" quiere decir realmente una sangría , generada presionando la tecla tab, lo que resultaría en que el archivo contenga literalmente (hasta) 4 caracteres de espacio para cada "tabulación" que escriba?
Dependiendo de su respuesta, uno de los siguientes conjuntos de la configuración debería funcionar para usted:
-
Para caracteres de tabulación que aparecen 4-espacios de ancho :
set tabstop=4
Si está utilizando el carácter de tabulación real en su código fuente, probablemente también desee estos ajustes (estos son en realidad los valores predeterminados, pero es posible que desee establecerlos a la defensiva):
set softtabstop=0 noexpandtab
Finalmente, si desea que una sangría corresponda a una sola pestaña, también debe usar:
set shiftwidth=4
-
Para sangrías que constan de 4 caracteres de espacio pero se introducen con la tecla tab:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Para hacer lo anterior preferencias agregar permanente estas líneas a su vimrc.
En caso de que necesite hacer ajustes, o simplemente le gustaría entender lo que significan todas estas opciones, aquí hay un desglose de lo que significa cada opción:
tabstop
El ancho de un tabstop duro medido en "espacios" effectively efectivamente el ancho (máximo) de un carácter de tabulación real.
shiftwidth
El tamaño de un "guión". También se mide en espacios, así que si su código sangrías base con caracteres de tabulación entonces desea
shiftwidth
igual al número de caracteres de tabulación portabstop
. Esto también es utilizado por cosas como el=
,>
y<
órdenes.
softtabstop
Establecer esto a un valor distinto de cero que no sea
tabstop
hará que la tecla tab (en modo de inserción) inserte una combinación de espacios (y posiblemente tabulaciones) para simular tabulaciones a este ancho.
expandtab
Habilitar esto hará que la tecla tab (en insertar modo) insertar espacios en lugar de caracteres de tabulación. Esto también afecta el comportamiento del comando
retab
.
smarttab
Habilitar esto hará que la tecla tab (en modo de inserción) inserte espacios o pestañas para ir al siguiente guión de la siguiente tabstop cuando el cursor está al principio de una línea (es decir, el solo los caracteres anteriores son espacios en blanco).
Para más detalles sobre cualquiera de estos ver :help 'optionname'
en vim (por ejemplo, :help 'tabstop'
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-04 22:36:39
Para definir esto de forma permanente para el usuario actual, cree (o edite) el archivo .vimrc
:
$ vim ~/.vimrc
Luego, pegue la configuración de abajo en el archivo. Una vez que se reinicie vim, se aplicará la configuración de la pestaña.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-20 19:28:19
O abreviatura de vim modeline:
vim :set ts=4 sw=4 sts=4 et :
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-10 06:22:11
Copié y pegué esto en mi .archivo vimrc:
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
Los primeros 2 ajustes significan que cuando presiono Tab obtengo 4 espacios.
El tercer ajuste significa que cuando hago V>
(es decir, visual y sangría) también obtengo 4 espacios.
No es tan completo como la respuesta aceptada, pero podría ayudar a las personas que solo quieren algo para copiar y pegar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-28 10:49:43
Ponga la configuración deseada en ~/.archivo vimrc See Vea a continuación algunas pautas y mejores prácticas.
Hay cuatro formas principales de usar las pestañas en Vim:
-
Siempre mantenga 'tabstop' en 8, establezca 'softtabstop' y 'shiftwidth' en 4 (o 3 o lo que prefiera) y use 'noexpandtab'. A continuación, Vim utilizará una mezcla de pestañas y espacios, pero escribiendo y se comportará como una pestaña aparece cada 4 (o 3) caracteres.
Nota: Establecer 'tabstop' a cualquier otro un valor superior a 8 puede hacer que su archivo parezca incorrecto en muchos lugares (por ejemplo, al imprimirlo).
Establece 'tabstop' y 'shiftwidth' a lo que prefieras y usa 'expandtab'. De esta manera siempre insertará espacios. El formato nunca se estropeará cuando se cambie 'tabstop'.
Establezca 'tabstop' y 'shiftwidth' en lo que prefiera y use |modeline / para establecer estos valores al editar el archivo nuevamente. Solo funciona cuando se utiliza Vim para editar file.
Siempre establezca 'tabstop' y 'shiftwidth' en el mismo valor, y 'noexpandtab'. Esto debería funcionar (solo para sangrías iniciales) para cualquier configuración de tabstop que la gente use. Sin embargo, podría ser bueno tener pestañas después del primer espacio no en blanco insertado como espacios si lo hace. De lo contrario, los comentarios alineados serán incorrectos cuando 'tabstop' ischanged.
Fuente:
- vimdoc.sourceforge.net/htmldoc/options.html # 'tabstop'
:help tabstop
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-24 23:42:50
Una cosa más, use:retab
para convertir tab
a spaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-04 14:58:08
Añadir líneaset ts=4
en~/.vimrc
archivo para por usuario
o/etc/vimrc
archivo para system wide
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-07 12:12:04
Hay pocas configuraciones que definen si usar espacios o pestañas.
Así que aquí hay funciones útiles que se pueden definir en su archivo ~/.vimrc
:
function! UseTabs()
set tabstop=4 " Size of a hard tabstop (ts).
set shiftwidth=4 " Size of an indentation (sw).
set noexpandtab " Always uses tabs instead of space characters (noet).
set autoindent " Copy indent from current line when starting a new line (ai).
endfunction
function! UseSpaces()
set tabstop=2 " Size of a hard tabstop (ts).
set shiftwidth=2 " Size of an indentation (sw).
set expandtab " Always uses spaces instead of tab characters (et).
set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
set autoindent " Copy indent from current line when starting a new line.
set smarttab " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction
Uso:
:call UseTabs()
:call UseSpaces()
Para usarlo por extensiones de archivo, se puede usar la siguiente sintaxis (añadida a .vimrc
):
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
Ver también: Convertir pestañas en espacios.
Aquí hay otro fragmento de Wikia que se puede usar para alternar entre pestañas y espacios :
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
expandtab
" allow toggling between local and default mode
function TabToggle()
if &expandtab
set shiftwidth=8
set softtabstop=0
set noexpandtab
else
set shiftwidth=4
set softtabstop=4
set expandtab
endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z
Permite usar 4 espacios para cada pestaña y una asignación a F9 para alternar la configuración.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-26 22:24:38
:set sw=4
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-01 18:10:30