Como inverter a seleção no vim?

12

Depois de selecionar um intervalo de linhas com o comando V , eu gostaria de deletar todas as linhas do arquivo que NÃO estão selecionadas, então é uma maneira de inverter a seleção - selecione todas as linhas que não estão selecionadas? / p>

Como

:g!/FOO/d

exclui todas as linhas que NÃO contêm FOO .

Se eu tivesse um intervalo em mente e quisesse usar seu inverso:

'a,'b

Eu precisaria usar os dois intervalos:

1,'a-1

e

'b+1,$

Eu suspeito que isso não pode ser feito em um passo - mas seria bom!

    
por Kevin Panko 19.11.2009 / 16:44

4 respostas

6

Primeiro crie o mapeamento a seguir (por exemplo, vinculado à chave <F4> )

map <F4> :<C-U>1,'<-1:delete<CR>:'>+1,$:delete<CR>

depois de selecionar um intervalo no modo visual, basta pressionar <F4> para acionar o comando associado. O comando pode ser facilmente explicado em partes:

  • " : " Entre no modo de linha de comando.
  • " <C-U> " Remova todos os caracteres entre a posição do cursor e o início da linha.
  • " 1,'<-1 " Especifique o intervalo da primeira linha do arquivo até a linha antes do início da seleção atual.
  • " :delete<CR> " Excluir (o intervalo de linhas especificado anteriormente).
  • " :'>+1,$:delete<CR> " Exclua as linhas no intervalo " '>+1,$ ", isto é, da linha após o final da seleção até o final do arquivo.
por 19.11.2009 / 17:38
15
  1. selecione seu texto
  2. "*yggdG"*p , o que significa ...

    "*y    " yank it to the selection register
    ggdG   " delete everything
    "*p    " and paste the selection again 
    
por 19.11.2009 / 17:58
6

Apenas para a posteridade:

:v/\%V/d

Isso faz um inverso global nas linhas que não fazem parte da seleção. Observe que: v é uma construção baseada em linha, portanto, qualquer linha que contenha qualquer seleção, seja de linha, fluxo ou seleção de bloco, será poupada da exclusão.

    
por 02.08.2012 / 04:47
1

desde 'inverter' significa basicamente criar 'multiseleções' (a área antes e depois da seleção original) eu procurei novamente os vimscripts link . tente isso.

 There are a number of operations to very
 easily manipulate selections such as modifying 
 the regions (add/delete/inverte/clear), hiding, 
 refreshing, saving and restoring etc."
    
por 19.11.2009 / 19:24

Tags