Como copiar a saída do comando no vim?

33

Por exemplo, se eu digitar ' :pwd' para obter o diretório de trabalho atual, posso selecionar o texto no gvim, mas não consigo descobrir como copiá-lo para a área de transferência. Se eu tentar o mesmo no console vim, nem consigo selecioná-lo com o mouse. Gostaria que isso funcionasse com todos os comandos do vim, como set guifontcopiar a guifont=Consolas:h10:cANSIsaída.

Steven
fonte

Respostas:

41

Você está procurando por isso,

:redir @* | set guifont | redir END

: comando redir redireciona a saída de um comando para um registrador (@ *). O registro @ * refere-se à área de transferência.

Para mais informações sobre isso,

:help :redir
asdfg
fonte
não funcionou no vim-gtk alguma pista?
Sergio Abreu
@SergioAbreu tente em @+vez de @*(bem, funciona no gvim).
precisa saber é
10

Tente ' :r !pwd' para obter o diretório de trabalho atual diretamente no arquivo aberto do GVIM.
Você pode copiá-lo para a área de transferência, como faria com qualquer outro conteúdo de arquivo de texto aberto lá.

nik
fonte
Isso é útil, mas posso usar isso set guifontpor exemplo?
27710 Steven
Não, esse não é um comando do shell, portanto não funcionará.
21430 Kevin Panko
4

Para este exemplo em particular, você pode fazer (observe o "!", Que o faz passar pelo shell):

:!pwd | xclip

ou

:!pwd | xclip -selection secondary

(dependendo da seleção X desejada).

Pode ser necessário instalar o xclip primeiro

sudo apt-get install xclip

(ou equivalente)

nisc
fonte
3

Se você estiver executando o vim em um xterm, pressionar a tecla Shift enquanto seleciona o texto copiará o texto para o equivalente X da área de transferência.

garyjohn
fonte
X tem duas pranchetas (pelo menos); sua sugestão colocará o texto na seleção PRIMARY (cole com clique do meio) em vez da seleção de CLIPBOARD (cole com Ctrl + V na maioria dos aplicativos).
Marius Gedminas