desenv-web-rp.com

Excluir "Tab" expandido pelo espaço no vim com um pressionamento de tecla?

Eu edito python código com vim.

Com o tab Chave Eu recebo quatro espaços inseridos por indentação. Como posso excluir esses espaços com um "backspace" (?) Acidente vascular cerebral - 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
19
Evgeny

Você pode usar Ctrl+D para fazer backup de uma parada de aba. Isso realmente move toda a linha para a parada de uma guia esquerda; Ctrl+T faz a mesma coisa à direita. Observe que essas teclas digitais funcionam apenas no modo Inserir (use << e >> para o equivalente no modo de comando).

24
Greg Hewgill
set softtabstop=4
30
sf17k

TL; DR: set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

Formulário curto: set ts=4 sts=-1 sw=0 et

Explicação

Se você definir softtabstop (ou sts) para -1 Ele se comportará automaticamente o mesmo que tabstop (ts), que economizará algum problema se você alterar muito a tabulação. Configuração shiftwidth (sw) para 0 deve efetivamente fazer isso o mesmo que tabstop também.

Em detalhe

shiftwidthsw

Número de espaços para usar para cada etapa de travessão (automático). Usado para cindent>><<, etc.
Quando zero o valor tabstop serão usados.

tabstopts

Número de espaços que um no arquivo conta. Veja também : retab comando e softtabstop opção.

softtabstopsts

Número de espaços que um Tab conta para realizar operações de edição, como inserir um Tab ou usando BS. It sente como Tabs estão sendo inseridos, enquanto, na verdade, uma mistura de espaços e s são usadas. Isso é útil para manter o tabs é configuração no seu valor padrão, enquanto poder editar como ele está definido como sts. Quando sts é negativo, o valor de shiftwidth é usado. Isso economizará alguns problemas se você alterar os tabultos bastante. Quando expandtab não está definido, o número de espaços é minimizado usando Tabs.

expandtabet

No modo de inserção: use o número apropriado de espaços para inserir um. Espaços são usados ​​em recuos com o >< comandos e quando autoindent está ligado. Para inserir uma guia real quando expandtab está ligado, use Ctrl-VTab. Veja também : retab

5
Orwellophile

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

2
Heptite

Várias opções:

  1. Você poderia 'retab' todos os espaços em branco para que eles sejam substituídos por guias. Dessa forma, eles poderiam ser facilmente excluídos.
  2. Você poderia (isso é não testado, então estou apenas propondo ideias aqui) Faça uma função que 'execute no modo normal 4 vezes a chave de backspace. Em seguida, mapeá-lo para alguma coisa. No entanto, não tem como saber se ele excluirá espaços ou alguns personagens importantes, então isso é potencialmente inseguro.
  3. '4x' irá excluir os últimos 4 caracteres (que é grande X, não pequeno, um pequeno vai agir como a tecla Del '.
1
Rook

a maneira mais fácil é <<, repita com um .

0
vimmer