Como fazer com que o vim pare de criar caracteres difíceis

2

Eu pressiono "Tab, Tab, Tab, Left, Delete" para obter o recuo necessário. Depois de salvar o arquivo, vejo "^ I". Se eu pressionar "Space" 11 vezes, eu vejo "".

Como fazer com que o vim pare de introduzir novos caracteres de tabulação (sem alterar o comportamento de indentação percebida pelo usuário ou desconfigurar as guias existentes)?

Há muitos smarttabs, shiftwidths, tabstops e outras opções confusas. Como fazer isso certo?

    
por Vi. 12.07.2011 / 21:34

2 respostas

4

Se você quiser que o vim traduza qualquer uma das suas abas para espaços, use:

set expandtab                     " expand tabs!

Você pode definir quantos "espaços" uma guia traduz com:

set softtabstop=4                 " if expandtab on, how many space a tab is

Se o vim encontrar guias existentes e você quiser que elas sejam traduzidas para espaços, defina isso para o número de espaços que uma guia representará

set tabstop=4                     " tab spacing of 4 for real tabs

(observe que set tabstop não afetará as guias existentes, apenas a exibição delas para você enquanto estiver no editor).

EDIT Eu também verificaria a resposta de garyjohn, para uma resposta muito mais precisa sobre o tratamento de tabulação existente, bem como o comportamento ao usar os comandos tabshifting << >> . (Eu realmente aprendi algumas coisas que eu não sabia sobre o seu comportamento!) +1 para sua resposta de mim!

    
por 12.07.2011 / 21:40
2

O Vim não irá alterar as guias existentes, a menos que você

  • execute :retab ou
  • altere o recuo de uma linha usando um comando como << ou >> .

Se você alterar o recuo de uma linha e 'expandtab' for definido, o Vim normalmente substituirá todas as guias por um número apropriado de espaços. Se você alterar o recuo de uma linha e 'noexpandtab' for definido, o Vim normalmente substituirá tantos espaços iniciais quanto possível pelas guias.

Esse comportamento normal pode ser alterado para tentar preservar a estrutura do recuo original, definindo a opção 'preserveindent'.

    
por 12.07.2011 / 22:07

Tags