@ heinrich5991 No lo entiendo. No necesito 8 espacios para darme cuenta de que una línea está sangrada, y más de lo necesario significa limitar los caracteres que puede ver en una larga línea de texto (al menos antes de ajustar). Pero a cada cual lo suyo. :)
weberc2
40
@ heinrich5991 Mi argumento es "usar lo menos posible para identificar fácilmente una línea con sangría". Según mi estimación, la capacidad de identificar fácilmente una sangría disminuye rápidamente en <3 espacios, y deja de aumentar en 4 espacios. Por lo tanto, la sangría que excede los 4 espacios es un desperdicio, en mi experiencia.
weberc2
77
@ weberc2 No podría estar más de acuerdo, amigo. Es por eso que me siento tan claustrofóbico leyendo Ruby o "JavaScript moderno", cada uno de los cuales usa 2 espacios para la sangría. Me da fatiga visual legítimamente cuando intento seguir estructuras muy anidadas. Fichas duras para la maldita victoria.
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" realmente quiere decir una sangría , generada 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 escribes?
Dependiendo de su respuesta, uno de los siguientes conjuntos de configuraciones debería funcionar para usted:
Para los caracteres de tabulación que aparecen en 4 espacios :
set tabstop=4
Si está usando el carácter de tabulación real en su código fuente, probablemente también desee estas configuraciones (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 se corresponda con 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 su vimrc .
En caso de que necesite hacer ajustes, o simplemente le gustaría entender qué significan todas estas opciones, aquí hay un desglose de lo que significa cada opción:
tabstop
El ancho de un tabulador rígido medido en "espacios" - efectivamente el ancho (máximo) de un carácter de tabulación real.
shiftwidth
El tamaño de una "sangría". También se mide en espacios, por lo que si la base de su código sangra con caracteres de tabulación, entonces desea shiftwidthigualar el número de caracteres de tabulación por veces tabstop. Esto también es utilizado por cosas como el =, >y <los comandos.
softtabstop
Establecer esto en un valor distinto de cero tabstophará que la tecla de tabulación (en modo de inserción) inserte una combinación de espacios (y posiblemente tabulaciones) para simular tabulaciones 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 retabcomando.
smarttab
Habilitar esto hará que la tecla de tabulación (en modo de inserción) inserte espacios o pestañas para ir al siguiente guión de la siguiente tabulación cuando el cursor esté al comienzo de una línea (es decir, los únicos caracteres anteriores son espacios en blanco).
Para más detalles sobre cualquiera de estos ver en vim (por ejemplo ):help 'optionname':help 'tabstop'
También es importante asegurarse de que los Makefiles siempre usen caracteres de tabulación dura, de lo contrario, las compilaciones fallarán. He mostrado cómo hacerlo, en stackoverflow.com/questions/234564/…
Shervin Emami
30
@ Indefinido Esa es la configuración del sistema vim. ~/.vimrces la configuración de vim del usuario. La mayoría de las personas dejan solo la configuración del sistema y solo editan la configuración del usuario. Tenga en cuenta que ~/.vimrcno existirá hasta que lo cree en la mayoría de los sistemas.
Laurence Gonsalves
44
¡Los usuarios de Vim toman nota de la set softtabstop=4función! Estoy cansado de tratar de leer su código con less, o cualquier otro editor vim, excepto para ver sangrías locas porque redefinió la pestaña para que sea un número arbitrario de espacios (¡aunque el resto del sistema piensa lo contrario!) :-)
Ogre Psalm33
66
¿Alguien puede ayudarme a entender por qué esta respuesta dice que se use tabstop=8para sangrías que consisten en 4 espacios? No pude entender el motivo después de leer las descripciones de las distintas configuraciones. Otra respuesta dice usar, lo tabstop=4que tiene un poco más de sentido para mí.
Kodos Johnson
55
@KodosJohnson La tabstopopción controla el ancho de un carácter de pestaña dura. Si desea que sus guiones a constan de 4 caracteres de espacio, en lugar de los caracteres de tabulación individuales que son 4-ancha, entonces el ancho de su carácter de tabulación no importa - tipo de . En la práctica, probablemente desee que el ancho de su carácter de tabulación sea diferente del ancho de sus sangrías, para reducir la posibilidad de que los caracteres de tabulación se disfracen como sangrías adecuadas. ( list+ también expandtabpuede ayudar aquí) Además, las pestañas de 8 caracteres de ancho son "el estándar": su terminal, Python y muchas otras herramientas están predeterminadas en pestañas de 8 caracteres de ancho.
Laurence Gonsalves
747
Para definir esto de forma permanente para el usuario actual, cree (o edite) el .vimrcarchivo:
$ vim ~/.vimrc
Luego, pegue la siguiente configuración 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
Si no tiene ~ / .vimrc, intente con / etc / vim / vimrc. En mi caso en Ubuntu 16.04, el archivo de configuración está ahí. Pero tenga en cuenta que cambiar este archivo hará que la configuración se use globalmente.
Hay pocas configuraciones que definen si se usan espacios o pestañas.
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 (agregada a .vimrc ):
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set 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 un mapeo F9para alternar la configuración.
" 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 2 primeras configuraciones significan que cuando presiono Tab obtengo 4 espacios. La tercera configuración significa que cuando lo hagoV> (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.
Ponga la configuración deseada en el archivo ~ / .vimrc : consulte a continuación algunas pautas y prácticas recomendadas.
Hay cuatro formas principales de usar pestañas en Vim:
Mantenga siempre 'tabstop' en 8, establezca 'softtabstop' y 'shiftwidth' en 4 (o 3 o lo que prefiera) y use 'noexpandtab'. Luego, Vim usará una combinación de pestañas y espacios, pero al escribir y se comportará como si una pestaña apareciera cada 4 (o 3) caracteres.
Nota: Configurar 'tabulación' en cualquier otro valor que no sea 8 puede hacer que su archivo parezca incorrecto en muchos lugares (por ejemplo, al imprimirlo).
Establezca 'tabstop' y 'shiftwidth' a lo que prefiera y use 'expandtab'. De esta manera siempre insertarás espacios. El formato nunca se estropeará cuando se cambie 'tabstop'.
Establezca 'tabstop' y 'shiftwidth' a lo que prefiera y use | modeline | para establecer estos valores al editar el archivo nuevamente. Solo funciona cuando se usa Vim para editar el archivo.
Establezca siempre 'tabstop' y 'shiftwidth' en el mismo valor, y 'noexpandtab'. Esto debería funcionar (solo para las sangrías iniciales) para cualquier configuración de tabulación que las personas usen. Sin embargo, puede ser bueno tener pestañas después del primer espacio no vacío insertado como espacios si hace esto. De lo contrario, los comentarios alineados serán incorrectos cuando se cambie 'tabulación'.
set number " show line number
set tabstop=2 " set display width of tab; 1 tab = x space with
set expandtab " transform tab to x space (x is tabstop)
set autoindent " auto indent; new line with number of space at the beginning same as previous
set shiftwidth=2 " number of space append to lines when type >>
Si configura EDITOR, la mayoría de los programas lo respetarán.
D. Ben Knoble
@ D.BenKnoble tienes razón. He intentado. por ahora prefiero ahorrarme tiempo y nervios. no puede ver que corre exactamente con los F10de nanopero yo siempre hago algunos trucos con Save (tal vez F10es una solución). o no funciona screen? No puedo recordar, solo lo odio)
Respuestas:
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" realmente quiere decir una sangría , generada 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 escribes?
Dependiendo de su respuesta, uno de los siguientes conjuntos de configuraciones debería funcionar para usted:
Para los caracteres de tabulación que aparecen en 4 espacios :
Si está usando el carácter de tabulación real en su código fuente, probablemente también desee estas configuraciones (estos son en realidad los valores predeterminados, pero es posible que desee establecerlos a la defensiva):
Finalmente, si desea que una sangría se corresponda con una sola pestaña, también debe usar:
Para sangrías que constan de 4 caracteres de espacio pero se ingresan con la tecla de tabulación:
Para que la configuración anterior sea permanente, agregue estas líneas a su vimrc .
En caso de que necesite hacer ajustes, o simplemente le gustaría entender qué significan todas estas opciones, aquí hay un desglose de lo que significa cada opción:
Para más detalles sobre cualquiera de estos ver en vim (por ejemplo )
:help 'optionname'
:help 'tabstop'
fuente
~/.vimrc
es la configuración de vim del usuario. La mayoría de las personas dejan solo la configuración del sistema y solo editan la configuración del usuario. Tenga en cuenta que~/.vimrc
no existirá hasta que lo cree en la mayoría de los sistemas.set softtabstop=4
función! Estoy cansado de tratar de leer su código conless
, o cualquier otro editorvim
, excepto para ver sangrías locas porque redefinió la pestaña para que sea un número arbitrario de espacios (¡aunque el resto del sistema piensa lo contrario!) :-)tabstop=8
para sangrías que consisten en 4 espacios? No pude entender el motivo después de leer las descripciones de las distintas configuraciones. Otra respuesta dice usar, lotabstop=4
que tiene un poco más de sentido para mí.tabstop
opción controla el ancho de un carácter de pestaña dura. Si desea que sus guiones a constan de 4 caracteres de espacio, en lugar de los caracteres de tabulación individuales que son 4-ancha, entonces el ancho de su carácter de tabulación no importa - tipo de . En la práctica, probablemente desee que el ancho de su carácter de tabulación sea diferente del ancho de sus sangrías, para reducir la posibilidad de que los caracteres de tabulación se disfracen como sangrías adecuadas. (list
+ tambiénexpandtab
puede ayudar aquí) Además, las pestañas de 8 caracteres de ancho son "el estándar": su terminal, Python y muchas otras herramientas están predeterminadas en pestañas de 8 caracteres de ancho.Para definir esto de forma permanente para el usuario actual, cree (o edite) el
.vimrc
archivo:Luego, pegue la siguiente configuración en el archivo. Una vez que se reinicie vim, se aplicará la configuración de la pestaña.
fuente
:retab
para convertir existentetab
aspaces
. vim.wikia.com/wiki/Converting_tabs_to_spaceso taquigrafía para vim modeline:
fuente
Hay pocas configuraciones que definen si se usan espacios o pestañas.
Aquí hay funciones útiles que se pueden definir en su
~/.vimrc
archivo:Uso:
Para usarlo por extensiones de archivo, se puede usar la siguiente sintaxis (agregada a
.vimrc
):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 :
Permite usar 4 espacios para cada pestaña y un mapeo F9para alternar la configuración.
fuente
Copié y pegué esto en mi archivo .vimrc:
Las 2 primeras configuraciones significan que cuando presiono 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 algo para copiar y pegar.
fuente
Ponga la configuración deseada en el archivo ~ / .vimrc : consulte a continuación algunas pautas y prácticas recomendadas.
Hay cuatro formas principales de usar pestañas en Vim:
Mantenga siempre 'tabstop' en 8, establezca 'softtabstop' y 'shiftwidth' en 4 (o 3 o lo que prefiera) y use 'noexpandtab'. Luego, Vim usará una combinación de pestañas y espacios, pero al escribir y se comportará como si una pestaña apareciera cada 4 (o 3) caracteres.
Nota: Configurar 'tabulación' en cualquier otro valor que no sea 8 puede hacer que su archivo parezca incorrecto en muchos lugares (por ejemplo, al imprimirlo).
Establezca 'tabstop' y 'shiftwidth' a lo que prefiera y use 'expandtab'. De esta manera siempre insertarás espacios. El formato nunca se estropeará cuando se cambie 'tabstop'.
Establezca 'tabstop' y 'shiftwidth' a lo que prefiera y use | modeline | para establecer estos valores al editar el archivo nuevamente. Solo funciona cuando se usa Vim para editar el archivo.
Establezca siempre 'tabstop' y 'shiftwidth' en el mismo valor, y 'noexpandtab'. Esto debería funcionar (solo para las sangrías iniciales) para cualquier configuración de tabulación que las personas usen. Sin embargo, puede ser bueno tener pestañas después del primer espacio no vacío insertado como espacios si hace esto. De lo contrario, los comentarios alineados serán incorrectos cuando se cambie 'tabulación'.
Fuente:
:help tabstop
fuente
:help tabstop
en vim.Una cosa más, utilice
:retab
para convertir existente
tab
aspaces
http://vim.wikia.com/wiki/Converting_tabs_to_spacesfuente
Ver Dominar el editor VI
fuente
Agregar línea
set ts=4
en el
~/.vimrc
archivo por usuarioo
/etc/vimrc
archivo para todo el sistemafuente
Mi ~ / .vimrc básico con comentario:
fuente
Permanente para todos los usuarios (cuando está solo en el servidor):
Normalmente en un nuevo servidor
apt-get purge nano mc
y todos los demás para ahorrar tiempo. De lo contrario, redefinirá el editor engit
,crontab
etc.fuente
F10
denano
pero yo siempre hago algunos trucos con Save (tal vezF10
es una solución). o no funcionascreen
? No puedo recordar, solo lo odio)