Limpe uma linha mais rápido que [0] [d] [$]

18

Existe uma maneira mais rápida de apagar o texto em uma linha do que

  • pressionando 0para pular para o início, então
  • pressionando d$para excluir até o final da linha?

Além disso, e se eu quisesse excluir tudo, exceto o recuo? Existe uma maneira de fazer isso?

Robbie Wxyz
fonte

Respostas:

34

Como você disse, existem várias maneiras e você também pode levar em consideração qual será sua próxima ação depois de limpar ou excluir a linha atual.

  1. dd excluirá a linha atual (não limpa)
  2. 0D limpará a linha atual, incluindo espaço em branco
  3. ^Dlimpará a linha atual sem incluir espaços em branco ( ^dg_economiza espaço à direita)
  4. 0C limpará a linha atual, incluindo espaços em branco e o colocará no modo de inserção
  5. ^Climpará a linha atual sem incluir espaços em branco e o colocará no modo de inserção ( ^cg_economiza espaço à direita)

ccou Sfuncionará como 4. ou 5. se o 'autoindent' estiver desativado ou ativado, respectivamente.

Portanto, use o que se encaixa na ação em questão. Eu acredito que 0Dé o mais rápido para limpar a linha, mas você pode mapear isso para algo, se desejar, para torná-lo ainda mais rápido.

akshay
fonte
7
@SuperScript Sé um sinônimo paracc
FDinoff 11/11/2015
1
Obrigado pela ótima resposta, @akshay; TYLTK é o melhor: vi.stackexchange.com/…
Robbie Wxyz
9

Sim. Se há uma coisa que eu gosto no Vim, é que a resposta para "Posso fazer isso?" é quase sempre um enfático sim .

0D Salta para o início e exclui até o final da linha.

^D (não Ctrl + D) pulará para o primeiro caractere que não é um espaço em branco e será excluído até o final.

(PS: Eu descobri isso agora e queria compartilhar com outros noobs. Por favor, deixe-me saber se existe uma maneira melhor.)

Robbie Wxyz
fonte
6

Limpar a linha com uma chave (deslocado): S.

Isso também mantém o recuo.

Você entra no modo de inserção na primeira posição após o recuo ou no início da linha - exatamente o que precisa para substituir uma linha - portanto, o Ssubstituto semelhante ao nome .

:help S

["x]S   Delete [count] lines [into register x] and start
        insert.  Synonym for "cc" |linewise|.

["x]cc  Delete [count] lines [into register x] and start
        insert |linewise|.  If 'autoindent' is on, preserve
        the indent of the first line.
Volker Siegel
fonte
Sé uma ótima chave.
Domi91c
3

Com o plug- in " vim-textobj-line " de Kana , você pode usar operações na linha recuada com il(por exemplo dil), ou na linha inteira sem a nova linha, com al(por exemplo yal). A vantagem dessa abordagem é sutil: ao invés de ter que pensar em ambos os movimentos (início, fim) para a operação desejada, você especifica o texto-objeto diretamente : i n l ine, um l ine.

VanLaser
fonte