在 tmux 中从 vim 复制到 python 控制台
Copy from vim to python console in tmux
我已经安装了 tmux。
tmux -V
tmux 2.3
设置我的配置文件。
cat ~/.tmux.conf
set -g mouse on
进入tmux,在里面打开两个垂直的windows,左边打开python3控制台,右边打开vim
现在用鼠标将光标移到右边第一行的开头。
进入普通模式,输入2yy+
,在我的+
寄存器中复制两行。
将光标向左移动python3 console
window ,如何将+
中的内容粘贴到python 控制台中?
@Kent,照你说的做:
1.Move 光标在第一行的开头,然后输入 "+2Y
2.Move 光标向左window,然后鼠标中键,没有任何反应。
3.press ctrl+b
然后按 ]
键。
2yy+
NOT 将两行复制到 +
reg 中,而是将两行拉到 "
reg 中,然后移动光标到下一行的第一个非空白字符
您可以在 vim 端执行:"*2Y
然后在 python 控制台上单击鼠标中键。
- 或者简单地 select 您想要通过鼠标复制到 vim 中的行,然后在 python 控制台中单击鼠标中键
首先你的 vim 应该用 +clipboard
编译见 vim --version | grep 'clipboard'
要在任何 vim 寄存器中复制(或删除),您可以使用以下语法
"<register name><oprator><motion>
(参见 :h registers
)例如
"ayy
(在寄存器 a
中复制当前行)或
"bdd
(删除寄存器b
中的当前行)或
"*ce
(删除到当前工作的末尾并将内容放入寄存器 *
使用 c
也会使您进入插入模式
- 复制整行你可以使用
yy
- 并且系统剪贴板映射到
+
或 *
(取决于 os)
所以要将整行复制到系统剪贴板中,您可以使用
"*yy
或 "+yy
(取决于 os)
或复制2行
"*2yy
或 "+2yy
(复制当前行和当前行之后的行)
将内容复制到系统剪贴板后,您可以使用(command + v
或 ctrl + shift + v
)
粘贴到 tmux 中
或使用 tmux 粘贴缓冲区映射系统剪贴板请参阅 https://unix.stackexchange.com/questions/67673/copy-paste-text-selections-between-tmux-and-the-clipboard#72340
我不太喜欢接受的解决方案,它依赖于剪贴板的图形环境,因为当 vim
无法访问剪贴板时这不起作用,这几乎总是 ssh
连接。
所以我想到了另一个解决方案:
不使用外部剪贴板 vim
可以通过管道将文本直接传递到 tmux
' 粘贴缓冲区
tmux load-buffer -
之后,您可以将 prefix + ]
缓冲区的内容粘贴到活动的 tmux
窗格中。
有多种方法可以将文本从 vim
传递到 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 -', @")
使用 tmux paste-buffer
您甚至可以同时触发粘贴到正确的窗格中:
# assuming the python pane is at :0.0
:call system('tmux load-buffer -; tmux paste-buffer -t :0.0', @")
您现在还可以轻松地将最后一行映射到一个键,以将视觉选择的文本发送到 python
窗格。
我已经安装了 tmux。
tmux -V
tmux 2.3
设置我的配置文件。
cat ~/.tmux.conf
set -g mouse on
进入tmux,在里面打开两个垂直的windows,左边打开python3控制台,右边打开vim
现在用鼠标将光标移到右边第一行的开头。
进入普通模式,输入2yy+
,在我的+
寄存器中复制两行。
将光标向左移动python3 console
window ,如何将+
中的内容粘贴到python 控制台中?
@Kent,照你说的做:
1.Move 光标在第一行的开头,然后输入 "+2Y
2.Move 光标向左window,然后鼠标中键,没有任何反应。
3.press ctrl+b
然后按 ]
键。
2yy+
NOT 将两行复制到 +
reg 中,而是将两行拉到 "
reg 中,然后移动光标到下一行的第一个非空白字符
您可以在 vim 端执行:"*2Y
然后在 python 控制台上单击鼠标中键。
- 或者简单地 select 您想要通过鼠标复制到 vim 中的行,然后在 python 控制台中单击鼠标中键
首先你的 vim 应该用 +clipboard
编译见 vim --version | grep 'clipboard'
要在任何 vim 寄存器中复制(或删除),您可以使用以下语法
"<register name><oprator><motion>
(参见:h registers
)例如"ayy
(在寄存器a
中复制当前行)或"bdd
(删除寄存器b
中的当前行)或"*ce
(删除到当前工作的末尾并将内容放入寄存器*
使用c
也会使您进入插入模式
- 复制整行你可以使用
yy
- 并且系统剪贴板映射到
+
或*
(取决于 os)
所以要将整行复制到系统剪贴板中,您可以使用
"*yy
或"+yy
(取决于 os)
或复制2行
"*2yy
或"+2yy
(复制当前行和当前行之后的行)
将内容复制到系统剪贴板后,您可以使用(command + v
或 ctrl + shift + v
)
或使用 tmux 粘贴缓冲区映射系统剪贴板请参阅 https://unix.stackexchange.com/questions/67673/copy-paste-text-selections-between-tmux-and-the-clipboard#72340
我不太喜欢接受的解决方案,它依赖于剪贴板的图形环境,因为当 vim
无法访问剪贴板时这不起作用,这几乎总是 ssh
连接。
所以我想到了另一个解决方案:
不使用外部剪贴板 vim
可以通过管道将文本直接传递到 tmux
' 粘贴缓冲区
tmux load-buffer -
之后,您可以将 prefix + ]
缓冲区的内容粘贴到活动的 tmux
窗格中。
有多种方法可以将文本从 vim
传递到 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 -', @")
使用 tmux paste-buffer
您甚至可以同时触发粘贴到正确的窗格中:
# assuming the python pane is at :0.0
:call system('tmux load-buffer -; tmux paste-buffer -t :0.0', @")
您现在还可以轻松地将最后一行映射到一个键,以将视觉选择的文本发送到 python
窗格。