@ heinrich5991 Não entendi. Não preciso de 8 espaços para perceber que uma linha é recuada e, mais do que o necessário, significa limitar os caracteres que você pode exibir em uma longa linha de texto (pelo menos antes de quebrar). Mas cada um na sua. :)
weberc2
40
@ heinrich5991 Meu argumento é "use o mínimo possível para identificar rapidamente uma linha recuada". Pela minha opinião, a capacidade de identificar facilmente um recuo diminui rapidamente em <3 espaços e para de aumentar em 4 espaços. Portanto, recuo que excede 4 espaços é um desperdício, na minha experiência.
precisa saber é o seguinte
7
@ weberc2 Não poderia estar mais de acordo, companheiro. É por isso que me sinto tão malditamente claustrofóbico lendo Ruby ou "JavaScript moderno", cada um dos quais usando 2 espaços para indentação. Ele legitimamente me dá cansaço ao tentar seguir estruturas fortemente aninhadas. Guias difíceis para a vitória maldita.
Isso depende do que você quer dizer. Deseja que os caracteres de tabulação reais em seu arquivo apareçam com 4 espaços de largura, ou por "tab" você quer dizer um recuo , gerado pressionando a tecla tab, o que resultaria no arquivo literalmente contendo (até) 4 caracteres de espaço para cada "guia" que você digita?
Dependendo da sua resposta, um dos seguintes conjuntos de configurações deve funcionar para você:
Para caracteres de tabulação que aparecem com quatro espaços :
set tabstop=4
Se você estiver usando o caractere de tabulação real no seu código-fonte, provavelmente também desejará essas configurações (na verdade, esses são os padrões, mas convém defini-los defensivamente):
set softtabstop=0 noexpandtab
Por fim, se você deseja que um recuo corresponda a uma única guia, você também deve usar:
set shiftwidth=4
Para recuos que consistem em 4 caracteres de espaço, mas são inseridos com a tecla Tab:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Para tornar as configurações acima permanentes, adicione essas linhas ao seu vimrc .
Caso você precise fazer ajustes ou simplesmente queira entender o que essas opções significam, veja a seguir o que cada opção significa:
tabstop
A largura de um batente rígido medido em "espaços" - efetivamente a largura (máxima) de um caractere de tabulação real.
shiftwidth
O tamanho de um "recuo". Também é medido em espaços, portanto, se sua base de código recuar com caracteres de tabulação, você deseja shiftwidthigualar o número de caracteres de tabulação vezes tabstop. Isso também é usado por coisas como o =, >e <comandos.
softtabstop
Definir isso para um valor diferente de zero, que tabstopfará com que a tecla tab (no modo de inserção) insira uma combinação de espaços (e possivelmente tabs) para simular paradas de tabulação nessa largura.
expandtab
Ativar isso fará com que a tecla tab (no modo de inserção) insira espaços em vez de caracteres de tabulação. Isso também afeta o comportamento do retabcomando.
smarttab
A ativação dessa opção fará com que a tecla tab (no modo de inserção) insira espaços ou tabulações para ir para o próximo travessão da próxima tabstop quando o cursor estiver no início de uma linha (ou seja, os únicos caracteres anteriores são espaços em branco).
Para mais detalhes sobre qualquer um deles, veja no vim (por exemplo ):help 'optionname':help 'tabstop'
Também é importante garantir que os Makefiles sempre usem caracteres de tabulação rígidos, caso contrário as compilações falharão! Eu mostrei como, em stackoverflow.com/questions/234564/…
Shervin Emami
29
@ Indefinidas Essas são as configurações do sistema vim. ~/.vimrcsão as configurações do vim do usuário. A maioria das pessoas deixa as configurações do sistema em paz e apenas edita as configurações do usuário. Observe que ~/.vimrcnão existirá até que você o crie na maioria dos sistemas.
Laurence Gonsalves
4
Os usuários do Vim anotam o set softtabstop=4recurso! Estou cansado de tentar ler seu código com less, ou qualquer outro editor vim, exceto , apenas para ver recuos malucos porque você redefiniu a guia para ser um número arbitrário de espaços (mesmo que o resto do sistema pense de outra forma)! :-)
Ogre Psalm33
6
Alguém pode me ajudar a entender por que essa resposta diz para usar tabstop=8travessões que consistem em 4 espaços? Não consegui entender o motivo depois de ler as descrições das várias configurações. Outra resposta diz para usar, o tabstop=4que faz um pouco mais de sentido para mim.
Kodo Johnson
5
@KodosJohnson A tabstopopção controla a largura de um caractere de tabulação rígido. Se você deseja que seus recuos sejam compostos por 4 caracteres de espaço, em vez de caracteres de tabulação únicos com 4 larguras, a largura do caractere de tabulação não importa - mais ou menos . Na prática, você provavelmente deseja que a largura dos caracteres da tabulação seja diferente da largura dos seus recuos, para reduzir a chance de os caracteres da tabulação se disfarçarem como recuos apropriados. ( list+ também expandtabpode ajudar aqui) Além disso, as guias com 8 caracteres de largura são "o padrão" - seu terminal, Python e muitas outras ferramentas são padronizadas como as guias de 8 caracteres de largura.
Laurence Gonsalves
746
Para definir isso permanentemente para o usuário atual, crie (ou edite) o .vimrcarquivo:
$ vim ~/.vimrc
Em seguida, cole a configuração abaixo no arquivo. Depois que o vim for reiniciado, as configurações da guia serão aplicadas.
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
Se você não possui ~ / .vimrc, tente com / etc / vim / vimrc. No meu caso no Ubuntu 16.04, o arquivo de configuração está lá. Mas lembre-se de que alterar esse arquivo fará com que a configuração seja usada globalmente.
Existem poucas configurações que definem o uso de espaços ou tabulações.
Então, aqui estão funções úteis que podem ser definidas no seu ~/.vimrcarquivo:
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 usá-lo por extensões de arquivo, a seguinte sintaxe pode ser usada (adicionada 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
Ele permite usar 4 espaços para cada guia e um mapeamento F9para alternar as configurações.
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
As 2 primeiras configurações significam que, quando pressiono Tab, recebo 4 espaços. A terceira configuração significa que, quando eu faço V>(visual e recuo), também recebo 4 espaços.
Não é tão abrangente quanto a resposta aceita, mas pode ajudar pessoas que querem apenas algo para copiar e colar.
Coloque as configurações desejadas no arquivo ~ / .vimrc - Veja abaixo algumas diretrizes e práticas recomendadas.
Existem quatro maneiras principais de usar guias no Vim:
Sempre mantenha 'tabstop' em 8, defina 'softtabstop' e 'shiftwidth' para 4 (ou 3 ou o que você preferir) e use 'noexpandtab'. Em seguida, o Vim usará uma mistura de guias e espaços, mas digitando e se comportará como uma guia aparece a cada 4 (ou 3) caracteres.
Nota: Definir 'tabstop' com qualquer outro valor que 8 pode fazer com que seu arquivo pareça errado em muitos lugares (por exemplo, ao imprimi-lo).
Defina 'tabstop' e 'shiftwidth' como desejar e use 'expandtab'. Dessa forma, você sempre inserirá espaços. A formatação nunca será alterada quando 'tabstop' for alterado.
Defina 'tabstop' e 'shiftwidth' como você preferir e use uma | modeline | para definir esses valores ao editar o arquivo novamente. Funciona apenas ao usar o Vim para editar o arquivo.
Sempre defina 'tabstop' e 'shiftwidth' com o mesmo valor e 'noexpandtab'. Isso deve funcionar (apenas para recuos iniciais) em qualquer configuração de tabstop usada pelas pessoas. Pode ser bom ter guias após o primeiro não espaço em branco inserido como espaços, se você fizer isso. Caso contrário, os comentários alinhados ficarão errados quando 'tabstop' for alterado.
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 >>
Permanente para todos os usuários (quando você estiver sozinho no servidor):
# echo "set tabstop=4" >> /etc/vim/vimrc
Normalmente no novo servidor apt-get purge nano mce em todos os outros para economizar seu tempo. Caso contrário, você redefinirá o editor em git, crontabetc
Se você definir EDITOR, a maioria dos programas o respeitará.
D. Ben Knoble
@ D.BenKnoble você está certo. eu tentei. por enquanto prefiro economizar tempo e nervosismo. Não é possível verificar exatamente o que é executado F10, nanomas eu sempre faço alguns truques com o save (talvez F10seja uma solução). ou não funciona screen? Não me lembro, apenas odeio)
Respostas:
Isso depende do que você quer dizer. Deseja que os caracteres de tabulação reais em seu arquivo apareçam com 4 espaços de largura, ou por "tab" você quer dizer um recuo , gerado pressionando a tecla tab, o que resultaria no arquivo literalmente contendo (até) 4 caracteres de espaço para cada "guia" que você digita?
Dependendo da sua resposta, um dos seguintes conjuntos de configurações deve funcionar para você:
Para caracteres de tabulação que aparecem com quatro espaços :
Se você estiver usando o caractere de tabulação real no seu código-fonte, provavelmente também desejará essas configurações (na verdade, esses são os padrões, mas convém defini-los defensivamente):
Por fim, se você deseja que um recuo corresponda a uma única guia, você também deve usar:
Para recuos que consistem em 4 caracteres de espaço, mas são inseridos com a tecla Tab:
Para tornar as configurações acima permanentes, adicione essas linhas ao seu vimrc .
Caso você precise fazer ajustes ou simplesmente queira entender o que essas opções significam, veja a seguir o que cada opção significa:
Para mais detalhes sobre qualquer um deles, veja no vim (por exemplo )
:help 'optionname'
:help 'tabstop'
fonte
~/.vimrc
são as configurações do vim do usuário. A maioria das pessoas deixa as configurações do sistema em paz e apenas edita as configurações do usuário. Observe que~/.vimrc
não existirá até que você o crie na maioria dos sistemas.set softtabstop=4
recurso! Estou cansado de tentar ler seu código comless
, ou qualquer outro editorvim
, exceto , apenas para ver recuos malucos porque você redefiniu a guia para ser um número arbitrário de espaços (mesmo que o resto do sistema pense de outra forma)! :-)tabstop=8
travessões que consistem em 4 espaços? Não consegui entender o motivo depois de ler as descrições das várias configurações. Outra resposta diz para usar, otabstop=4
que faz um pouco mais de sentido para mim.tabstop
opção controla a largura de um caractere de tabulação rígido. Se você deseja que seus recuos sejam compostos por 4 caracteres de espaço, em vez de caracteres de tabulação únicos com 4 larguras, a largura do caractere de tabulação não importa - mais ou menos . Na prática, você provavelmente deseja que a largura dos caracteres da tabulação seja diferente da largura dos seus recuos, para reduzir a chance de os caracteres da tabulação se disfarçarem como recuos apropriados. (list
+ tambémexpandtab
pode ajudar aqui) Além disso, as guias com 8 caracteres de largura são "o padrão" - seu terminal, Python e muitas outras ferramentas são padronizadas como as guias de 8 caracteres de largura.Para definir isso permanentemente para o usuário atual, crie (ou edite) o
.vimrc
arquivo:Em seguida, cole a configuração abaixo no arquivo. Depois que o vim for reiniciado, as configurações da guia serão aplicadas.
fonte
:retab
para converter existentetab
paraspaces
. vim.wikia.com/wiki/Converting_tabs_to_spacesou abreviação de vim modeline:
fonte
Existem poucas configurações que definem o uso de espaços ou tabulações.
Então, aqui estão funções úteis que podem ser definidas no seu
~/.vimrc
arquivo:Uso:
Para usá-lo por extensões de arquivo, a seguinte sintaxe pode ser usada (adicionada a
.vimrc
):Consulte também: Convertendo guias em espaços .
Aqui está outro trecho da Wikia que pode ser usado para alternar entre guias e espaços :
Ele permite usar 4 espaços para cada guia e um mapeamento F9para alternar as configurações.
fonte
Copiei e colei isso no meu arquivo .vimrc:
As 2 primeiras configurações significam que, quando pressiono Tab, recebo 4 espaços. A terceira configuração significa que, quando eu faço
V>
(visual e recuo), também recebo 4 espaços.Não é tão abrangente quanto a resposta aceita, mas pode ajudar pessoas que querem apenas algo para copiar e colar.
fonte
Coloque as configurações desejadas no arquivo ~ / .vimrc - Veja abaixo algumas diretrizes e práticas recomendadas.
Existem quatro maneiras principais de usar guias no Vim:
Sempre mantenha 'tabstop' em 8, defina 'softtabstop' e 'shiftwidth' para 4 (ou 3 ou o que você preferir) e use 'noexpandtab'. Em seguida, o Vim usará uma mistura de guias e espaços, mas digitando e se comportará como uma guia aparece a cada 4 (ou 3) caracteres.
Nota: Definir 'tabstop' com qualquer outro valor que 8 pode fazer com que seu arquivo pareça errado em muitos lugares (por exemplo, ao imprimi-lo).
Defina 'tabstop' e 'shiftwidth' como desejar e use 'expandtab'. Dessa forma, você sempre inserirá espaços. A formatação nunca será alterada quando 'tabstop' for alterado.
Defina 'tabstop' e 'shiftwidth' como você preferir e use uma | modeline | para definir esses valores ao editar o arquivo novamente. Funciona apenas ao usar o Vim para editar o arquivo.
Sempre defina 'tabstop' e 'shiftwidth' com o mesmo valor e 'noexpandtab'. Isso deve funcionar (apenas para recuos iniciais) em qualquer configuração de tabstop usada pelas pessoas. Pode ser bom ter guias após o primeiro não espaço em branco inserido como espaços, se você fizer isso. Caso contrário, os comentários alinhados ficarão errados quando 'tabstop' for alterado.
Fonte:
:help tabstop
fonte
:help tabstop
no vim.Mais uma coisa, use
:retab
para converter os existentes
tab
emspaces
http://vim.wikia.com/wiki/Converting_tabs_to_spacesfonte
Consulte Dominando o Editor VI
fonte
Adicionar linha
set ts=4
no
~/.vimrc
arquivo por usuárioou
/etc/vimrc
arquivo para todo o sistemafonte
Meu básico ~ / .vimrc com comentário:
fonte
Permanente para todos os usuários (quando você estiver sozinho no servidor):
Normalmente no novo servidor
apt-get purge nano mc
e em todos os outros para economizar seu tempo. Caso contrário, você redefinirá o editor emgit
,crontab
etcfonte
F10
,nano
mas eu sempre faço alguns truques com o save (talvezF10
seja uma solução). ou não funcionascreen
? Não me lembro, apenas odeio)