Pregunta Redefina la pestaña como 4 espacios


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


860
2017-12-10 06:18


origen


Respuestas:


Depende de lo que quieras decir. ¿Desea que los caracteres reales de tabulación en su archivo Aparecer 4 espacios de ancho, o por "pestaña" ¿realmente quieres decir sangrar, generado al presionar la tecla de tabulación, lo que daría como resultado que el archivo contenga literalmente (hasta) 4 caracteres de espacio para cada "pestaña" que escriba?

Dependiendo de su respuesta, uno de los siguientes conjuntos de la configuración debería funcionar para usted:

  • Para los caracteres de tabulación que aparecen en 4 espacios de ancho:

    set tabstop=4
    

    Si está utilizando un carácter de tabulación real en su código fuente, probablemente también desee estos ajustes (estos son los valores predeterminados, pero es posible que desee configurarlos 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 ingresan con la tecla de tabulación:

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    

Para que la configuración anterior sea permanente, agregue estas líneas a tu vimrc.

En caso de que necesite hacer ajustes, o simplemente quisiera entender qué significan todas estas opciones, aquí hay un desglose de lo que significa cada opción:

tabstop

El ancho de una tabstop dura medido en "espacios": de hecho, el ancho (máximo) de un carácter de tabulación real.

shiftwidth

El tamaño de un "sangrado". También se mide en espacios, por lo que si tu base de código sangra con caracteres de tabulación, entonces quieres shiftwidth para igualar el número de caracteres de pestañas veces tabstop. Esto también es usado por cosas como la =, > y < comandos.

softtabstop

Estableciendo esto en un valor distinto de cero que no sea tabstop hará la tecla de tabulación (en modo de inserción)   inserte una combinación de espacios (y posiblemente pestañas) para simular la pestaña se detiene en este ancho.

expandtab

Habilitar esto hará que la tecla de tabulación (en modo de inserción) inserte espacios en lugar de   caracteres de tabulación Esto también afecta el comportamiento del retab mando.

smarttab

Habilitar esto hará que la tecla de tabulación (en el modo de inserción) inserte espacios o pestañas para   ir a la siguiente sangría   de la siguiente tabstop cuando el cursor está al comienzo de una línea (es decir,   solo los caracteres precedentes son espacios en blanco).

Para más detalles sobre cualquiera de estos ver :help 'nombre de opción' en vim (p. :help 'tabstop')


1277
2017-12-10 06:19



Para definir esto de manera permanente para el usuario actual, cree (o edite) el .vimrc archivo:

$ vim ~/.vimrc

A continuación, pegue la configuración siguiente en el archivo. Una vez que vim se reinicie, 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

638
2017-12-10 06:20



o taquigrafía para la línea de modo vim:

vim :set ts=4 sw=4 sts=4 et :

44
2017-12-10 06:22



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

Las primeras 2 configuraciones significan que cuando presiono la tecla Tab, obtengo 4 espacios. La tercera configuración significa que cuando lo 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 copiar y pegar.


20
2018-06-28 10:49



Pon tu configuración deseada en el ~ / .vimrc archivo: consulte a continuación algunas pautas y mejores prácticas.

Hay cuatro formas principales de usar pestañas en Vim:

  1. Mantenga siempre 'tabstop' en 8, establezca 'softtabstop' y 'shiftwidth' en 4 (o 3 o lo que prefiera) y use 'noexpandtab'. Entonces Vim usará una combinación de pestañas y espacios, pero escribir y comportarse como una pestaña aparece cada 4 (o 3) caracteres.

    Nota: Establecer 'tabstop' en cualquier otro valor que no sea 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 utiliza 'expandtab'. De esta manera, siempre insertar espacios. El formateo nunca se perderá cuando se cambie "tabstop".

  3. Ajuste 'tabstop' y 'shiftwidth' a lo que prefiera y use | modeline | para establecer estos valores al editar el archivo de nuevo. Solo funciona cuando se usa Vim para editar el archivo.

  4. Configure siempre 'tabstop' y 'shiftwidth' con el mismo valor, y 'noexpandtab'. Esto debería funcionar (para sangrías iniciales solamente) para cualquier configuración de tabulación que las personas usen. Sería bueno tener pestañas después del primer espacio no en blanco insertado como espacios si haces esto. De lo contrario, los comentarios alineados serán incorrectos cuando se cambie "tabstop".

Fuente:


11
2018-05-07 01:45



Una cosa más, usa
:retab
convertir el existente tab a spaces http://vim.wikia.com/wiki/Converting_tabs_to_spaces


7
2017-11-10 14:40



Añadir línea
set ts=4
en
~/.vimrc archivo por usuario
o
/etc/vimrc archivo para todo el sistema


6
2017-07-19 14:12



:set sw=4

Ver Dominando el editor VI


4
2017-12-10 06:21



Hay pocos ajustes que definen si se deben usar espacios o pestañas.

Así que aquí hay funciones útiles que se pueden definir en su ~/.vimrc archivo:

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 (agregado a .vimrc)

au! BufWrite,FileWritePre *.module,*.install call UseSpaces()

Ver también: Conversión de pestañas a 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.


4
2018-01-22 21:37