Redefine la pestaña como 4 espacios


Mi configuración actual asume 8 espacios; ¿cómo podría redefinirlo?

 881
vim
Author: Paul Bellora, 2009-12-10

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 por tabstop. 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')

 1316
Author: Laurence Gonsalves,
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
 657
Author: Alan Haggai Alavi,
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 :
 46
Author: zen,
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.

 21
Author: Snowcrash,
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:

  1. 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).

  2. 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'.

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

  4. 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:

 11
Author: ElasticThoughts,
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

 6
Author: Dawn Song,
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ínea
set ts=4
en
~/.vimrc archivo para por usuario
o
/etc/vimrc archivo para system wide

 6
Author: Alok Singh Mahor,
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.

 5
Author: kenorb,
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
 4
Author: Amarghosh,
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