vim: substitui todos os caracteres até o final da linha


30

Talvez eu esteja sendo idiota, mas você pode substituir todos os caracteres de onde o cursor está até o final da linha por um comando? Em seguida, use .a mesma substituição na próxima linha e assim por diante.

Respostas:


49

Se entendi sua pergunta corretamente, tente o seguinte:

C(é um C maiúsculo) excluirá tudo do cursor até o final da linha e o colocará no modo INSERT . Depois, você escreve sua substituição, sai do modo INSERT e usa .para repetir o processo em outro lugar.


Bem. :)De nada.
sr_ 17/02/12

16
se alguém estava pensando, é uma capital C :)
David Silva Smith

11
Seria bom para atualizar a resposta para especificar que este é um capital C.
fraxture

14

Adicionando à resposta do sr_:

Se o cursor iniciar na mesma posição em cada linha, você poderá estar interessado no recurso Visual Block .

Digite o seguinte em ordem, com o cursor na posição inicial:

  • Ctrl+ v: Entre no modo de bloqueio visual.
  • $: vá para o final da linha.
  • [X]j: substitua X pelo número de linhas que você deseja diminuir.

Isso deve criar uma seleção retangular que vai do seu cursor na primeira linha até o final da linha [X] abaixo.

Você pode substituir toda a sua seleção:

  • c: exclua a seleção e entre no modo de inserção.
  • inserir novo texto
  • Esc: Sai do modo de inserção; O Vim repetirá automaticamente o passo em cada linha selecionada.

Eu uso o bloco visual sempre que posso, pensei em compartilhar


+1 boa resposta de fato. Mas não é exatamente o que eu quero, pois às vezes meu código não está muito bem formatado assim ^ _ ~
Sardathrion - Reinstate Monica

@sardathrion; Comentário do RE, 'bem formatado'. Criando tabelas no Markdown, fui capaz de preencher automaticamente os espaços nas n+1linhas, depois de criar a linha npelo Visual Block selecionando para trás ! Em outras palavras, a forma era semelhante a L 7 invertido ou L invertido vertical, ou "não muito bem formatado". ri muito.
Xtian #

3

Cou c$é para "alterar" e Ré para "substituir".

Dois comportamento quase semelhante. O primeiro eliminaria a linha antes de começar a digitar; enquanto o último permite digitar os caracteres e possivelmente ultrapassar o limite dos caracteres da linha antiga exibidos.


1

Basta pressionar 'C', ou seja, C maiúsculo no modo de comando e digite o texto de substituição.


0

As outras respostas foram perdidas, elas não entram no modo de inserção.

  • D Excluir para o final da linha
  • d$ Exclui do cursor até o final da linha

Então é claro que use .


-1 por não entrar no modo de inserção, pois é exatamente isso que pedi. +1 por uma questão de integridade.
Sardathrion - Restabelece Monica

0

Como pode ser útil, uma vez que estamos tentando mudar até o final da linha. Eu criei um mapeamento de inserção para executar esta tarefa, ela não é usada Dporque no modo de inserção essa chave é usada para diminuir o recuo. Então é isso Ctrl-k

:inoremap <C-k> <C-o>C
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.