tubulação não-destrutiva no vim?

3

Existe uma maneira de canalizar o texto selecionado através de um comando externo no vim, mas não para substituir o texto selecionado pela saída? Ocasionalmente eu quero copiar algo em um buffer vim para a área de transferência do X, então eu uso algo como %!xclip - mas então eu tenho que "desfazer" esse comando para recuperar o texto já que o xclip não retorna nada. Além de escrever um script wrapper em torno do xclip que também ecoa o texto de volta, há uma maneira melhor de fazer isso?

Obrigado!

    
por Patrick 31.05.2011 / 21:30

2 respostas

3

Em vez de %!xclip use

%w !xclip

Observe o espaço entre o w e o ! . Veja

:help :w_c
    
por 31.05.2011 / 21:51
1

Para copiar para a área de transferência, eu uso

"*y

Para saber mais sobre a diferença entre "* e "+ , você deve verificar :h x11-selection . Para mim, o seguinte parece ser relevante:

Xterm, by default, always writes visible selections to both PRIMARY and CUT_BUFFER0. When it pastes, it uses PRIMARY if this is available, or else falls back upon CUT_BUFFER0. For this reason, when cutting and pasting between Vim and an xterm, you should use the "* register. Xterm doesn't use CLIPBOARD, thus the "+ doesn't work with xterm.

Então, vou ficar com "* em vez de "+ que peth mencionou, mas você pode fazer bem para testar quais funcionam melhor para seu padrão de uso.

    
por 10.06.2011 / 13:54

Tags