Copiar do vim para o console python no tmux

8

Eu instalei o tmux.

tmux -V
tmux 2.3

Defina meu arquivo de configuração.

cat  ~/.tmux.conf
set -g mouse on

Entre no tmux e abra duas janelas verticais, abra o console python3 à esquerda e abra o vim à direita.

insira a descrição da imagem aqui

Agora mova meu cursor no começo da primeira linha à direita com o mouse.
Entre no modo normal e insira 2yy+, para copiar duas linhas no meu +registro.
Mova o cursor para a python3 consolejanela esquerda . Como colar o conteúdo +registrado no console python? @ Kent, faça o que você diz: 1. Mova o
cursor no início da primeira linha e digite "+2Y
2. Mova o cursor para a janela esquerda e clique com o botão do meio do mouse, nada acontece. 3. ctrl+bpressione e pressione a ]tecla.

insira a descrição da imagem aqui

coder_view
fonte
O plugin vim-tmux-clipboard pode ajudar.
Amadan 17/01

Respostas:

3

o seu primeiro vim deve ser compilado com +clipboardseevim --version | grep 'clipboard'

Para copiar (ou excluir) em qualquer registro vim, você pode usar o seguinte syntex

  • "<register name><oprator><motion>(ver :h registers) por exemplo
    1. "ayy(copie a linha atual no registro a) ou
    2. "bdd(excluir a linha atual no registro b) ou
    3. "*ce(excluir para o final do trabalho atual e colocar o conteúdo no registro *usando ctambém o colocará no modo de inserção
  • para copiar a linha inteira, você pode usar yy
  • e a área de transferência do sistema é mapeada para um +ou *(dependendo do sistema operacional)

para copiar toda a linha na área de transferência do sistema, você pode usar

  • "*yyou "+yy(dependendo do sistema operacional)

ou copiar 2 linhas

  • "*2yyou "+2yy(para copiar atual e a linha após a linha atual)

Depois que o conteúdo é copiado na área de transferência do sistema, você pode colar no tmux usando ( command + vou ctrl + shift + v)

ou para mapear a área de transferência do sistema com o buffer de colagem tmux, consulte /unix/67673/copy-paste-text-selections-between-tmux-and-the-clipboard#72340

Tripurari Shankar
fonte
1

2yy+se não copiar duas linhas para +reg, em vez disso, ele puxa duas linhas para "reg, em seguida, move o cursor para o primeiro caractere não em branco na linha seguinte

Você pode, no lado do vim, fazer: "*2Ye clicar com o botão direito do mouse no console do python.

  • ou simplesmente selecione as linhas que deseja copiar no vim com o mouse e clique no meio do console do python
Kent
fonte
Eu posso pressionar middle-clic no gedit para colar linhas nele, não sei por que não consigo colar na janela esquerda.
coder_view 17/01
Devo escrever alguma configuração em ~ / .tmux.conf?
coder_view 17/01
1

Não gostei muito da solução aceita, que depende de um ambiente gráfico para a área de transferência, pois isso não funciona quando vimnão é possível acessar a área de transferência, o que quase sempre acontece com as sshconexões. Então, eu cam com outra solução:

Em vez de usar a área de transferência externa, vimpode passar o texto diretamente para o tmux'colar buffer, canalizando-o para

tmux load-buffer -

Depois disso, você pode colar o conteúdo do buffer prefix + ]no tmuxpainel ativo .

Existem várias maneiras de passar o texto de vimpara tmux:

# to write the current line into the tmux buffer:
:.w !tmux load-buffer -

# to write all *lines* within the visual selection into the tmux buffer:
:'<,'>w !tmux load-buffer -

# to pipe the content of a register (e.g. from a previous selection) into the buffer:
# @" being the unnamed register, @0 - @9 the numbered registers, and so on
:call system('tmux load-buffer -', @")

Usando tmux paste-buffervocê pode até disparar a colagem no painel correto ao mesmo tempo:

# assuming the python pane is at :0.0
:call system('tmux load-buffer -; tmux paste-buffer -t :0.0', @")

Agora você também pode mapear facilmente a última linha para uma tecla para enviar o texto selecionado visualmente para o pythonpainel.

acran
fonte