Exclui o “tab” expandido por espaço no Vim com um pressionamento de tecla?

18

Eu edito código Python com o Vim.

Com a tecla tab , recebo quatro espaços inseridos para recuo. Como posso excluir esses espaços com um traço "Backspace" (?) - em vez de quatro?

Tem que haver alguma opção "set" para isso ...

Aqui está o meu .vimrc:

set autoindent
set ts=4
set sw=4
set et
    
por Evgeny 16.07.2009 / 05:12

8 respostas

23

Você pode usar Ctrl + D para fazer o backup de uma parada de tabulação. Isso realmente move toda a linha para a esquerda, uma parada de tabulação; Ctrl + T faz a mesma coisa para a direita. Observe que esses pressionamentos de tecla funcionam apenas no modo de inserção (use << e >> para o equivalente no modo de comando).

    
por 16.07.2009 / 05:19
29
set softtabstop=4
    
por 01.12.2010 / 01:10
4

tl; dr: set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

formato curto: set ts=4 sts=-1 sw=0 et

Explicação

Se você definir softtabstop (ou sts ) como -1 , ele se comportará automaticamente  igual a tabstop ( ts ), o que poupará algum incômodo se você alterar muito a tabulação. A configuração de shiftwidth ( sw ) para 0 deve efetivamente fazer  que o mesmo que tabstop também.

Em detalhes

shiftwidth sw

Number of spaces to use for each step of (auto)indent. Used for cindent, >>, <<, etc.
When zero the tabstop value will be used.

tabstop ts

Number of spaces that a in the file counts for. Also see :retab command, and softtabstop option.

softtabstop sts

Number of spaces that a Tab counts for while performing editing operations, like inserting a Tab or using BS. It feels like Tabs are being inserted, while in fact a mix of spaces and s are used. This is useful to keep the tabs is setting at its standard value, while being able to edit like it is set to sts. When sts is negative, the value of shiftwidth is used. This will save you some hassle if you change tabstops a lot. When expandtab is not set, the number of spaces is minimized by using Tabs.

expandtab et

In Insert mode: Use the appropriate number of spaces to insert a . Spaces are used in indents with the > and < commands and when autoindent is on. To insert a real tab when expandtab is on, use Ctrl-V Tab. See also :retab

    
por 23.07.2016 / 22:22
2

Eu escrevi GreedyBackspace.vim para alguém que queria algo assim. Eu não uso pessoalmente, então já faz um tempo desde que eu atualizei. Eu não recebi nenhum relatório de bug ultimamente, no entanto.

    
por 11.09.2009 / 08:21
1

Várias opções:

  1. Você pode "retabular" todos os espaços em branco para serem substituídos por guias. Dessa forma, eles poderiam ser facilmente excluídos.
  2. Você poderia (isso não foi testado, então estou apenas propondo idéias aqui) fazer uma função que 'execute no modo normal 4 vezes a tecla backspace. Em seguida, mapeie para algo. No entanto, não tem como saber se irá excluir espaços ou alguns caracteres importantes, portanto, isso é potencialmente inseguro.
  3. '4X' excluirá os últimos 4 caracteres (isso é grande X, não pequeno, um pequeno vai agir como a tecla Del '.
por 16.07.2009 / 05:27
0

A maneira mais fácil é << , repita com .

    
por 03.04.2016 / 15:27
-1

Você verificou usando a configuração expandir tabs no seu VIM?

:set noet

Geralmente, prefiro manter as guias ativas enquanto trabalho nos arquivos.
Quando for necessário, substituo as guias por 4 espaços ou quantas forem necessárias.

:%s/<ctrl+V><tab>/    /g
                  ----

Como um pequeno bônus, seu arquivo de origem é menor em 3 caracteres por guia :-)

    
por 16.07.2009 / 05:18
-2

Eu não acho que haja um jeito. Uma vez que a tecla tab é expandida para quatro espaços, o vim não tem como saber que alguma vez foi uma tabulação.

    
por 16.07.2009 / 05:18

Tags