我在 vim 中打开了两个文件,每个文件都在一个 tmux 窗格中。我想将一个文件中的 10 行复制到另一个文件中。
如何不使用鼠标的Copy
->来完成此任务Paste
?
答案1
您必须使用 tmux 快捷方式。假设您的 tmux 命令快捷方式是默认的:Ctrl+ b,那么:
Ctrl+ b,[进入复制(?)模式。
移动到文本的开头/结尾以突出显示。
Ctrl+Space
开始突出显示文本(在 Arch Linux 上)。当我在 OSX 和其他 Linux 上从源代码编译 tmux 时,它Space本身通常就可以工作。选定的文本会更改颜色,因此您会知道该命令是否有效。
移动到文本的另一端进行复制。
Alt+w将选定的文本复制到
tmux
剪贴板。
在 Mac 上,使用Esc+ w。Enter如果以上都不起作用,请尝试。将光标移至对面的 tmux 窗格,或完全不同的 tmux 窗口。将光标放在要粘贴刚刚复制的文本的位置。
Ctrl+ b,]粘贴从 tmux 剪贴板复制的文本。
tmux
非常擅长将命令映射到自定义键盘快捷键。
有关设置键盘快捷键的完整列表,请参阅Ctrl+ b。?
答案2
不幸的是,我还无法对 Alex Leach 的答案添加评论,因此我将在此处为 Mac OS X 用户添加一个附录:
- Enter复制选定的文本
答案3
如果您在 macOS 上使用 vim 和 tmux(在 macOS 10.12.2、tmux 2.3 上测试):
(假设tmux的前缀组合键为,默认prefix前缀为ctrl+ 。)b
- 复制:
- 按prefix+[进入复印模式。
- 使用箭头键转到文本选择的开始/结束。
- 按ctrl+ space(如果您已将ctrl+设置space为前缀,请按ctrl+ space+space代替)
- 使用箭头键移动到选择的另一侧。
- 按ctrl+ w。
- 粘贴:
- 在插入模式下按prefix+ 。]
答案4
如果你已经vim
打开了,最好使用vim复制粘贴来复制文本。
Tmux 复制粘贴可以工作,但有几个缺点。
首先,复制多行文本时,您必须选择多行。 Tmux 复制粘贴通常不理解vim
有行号或 vim 装订线中的标记(例如相对数字/绝对数字)。结果,它也会复制这些。
其次,我发现如果文本具有某些特定于语言的格式,并且您直接尝试使用 tmux 复制粘贴到 vim,则会弄乱格式。这可以通过使用来避免set paste!
。然而,这需要做更多的工作。
用于"+y
复制和"+p
粘贴
Vim
本机提供了一种在 vim 缓冲区和系统剪贴板之间复制粘贴的方法,使用"+y
或"*y
。然后使用"+p
或进行粘贴"*p
。这将避免复制装订线中的相对数字或其他与 vim 不相关的随机标记