将文本从一个 tmux 窗格复制到另一个(使用 vim)

将文本从一个 tmux 窗格复制到另一个(使用 vim)

我在 vim 中打开了两个文件,每个文件都在一个 tmux 窗格中。我想将一个文件中的 10 行复制到另一个文件中。

如何不使用鼠标的Copy->来完成此任务Paste

答案1

您必须使用 tmux 快捷方式。假设您的 tmux 命令快捷方式是默认的:Ctrl+ b,那么:

  1. Ctrl+ b,[进入复制(?)模式。

  2. 移动到文本的开头/结尾以突出显示。

  3. Ctrl+Space

开始突出显示文本(在 Arch Linux 上)。当我在 OSX 和其他 Linux 上从源代码编译 tmux 时,它Space本身通常就可以工作。选定的文本会更改颜色,因此您会知道该命令是否有效。

  1. 移动到文本的另一端进行复制。

  2. Alt+w将选定的文本复制到tmux剪贴板。
    在 Mac 上,使用Esc+ wEnter如果以上都不起作用,请尝试。

  3. 将光标移至对面的 tmux 窗格,或完全不同的 tmux 窗口。将光标放在要粘贴刚刚复制的文本的位置。

  4. Ctrl+ b]粘贴从 tmux 剪贴板复制的文本。

tmux非常擅长将命令映射到自定义键盘快捷键。

有关设置键盘快捷键的完整列表,请参阅Ctrl+ b?

答案2

不幸的是,我还无法对 Alex Leach 的答案添加评论,因此我将在此处为 Mac OS X 用户添加一个附录:

  1. Enter复制选定的文本

答案3

如果您在 macOS 上使用 vim 和 tmux(在 macOS 10.12.2、tmux 2.3 上测试):

(假设tmux的前缀组合键为,默认prefix前缀为ctrl+ 。)b

  • 复制:
    1. prefix+[进入复印模式。
    2. 使用箭头键转到文本选择的开始/结束。
    3. ctrl+ space(如果您已将ctrl+设置space为前缀,请按ctrl+ space+space代替)
    4. 使用箭头键移动到选择的另一侧。
    5. ctrl+ w
  • 粘贴:
    1. 在插入模式下按prefix+ 。]

答案4

如果你已经vim打开了,最好使用vim复制粘贴来复制文本。

Tmux 复制粘贴可以工作,但有几个缺点。

首先,复制多行文本时,您必须选择多行。 Tmux 复制粘贴通常不理解vim有行号或 vim 装订线中的标记(例如相对数字/绝对数字)。结果,它也会复制这些。

其次,我发现如果文本具有某些特定于语言的格式,并且您直接尝试使用 tmux 复制粘贴到 vim,则会弄乱格式。这可以通过使用来避免set paste!。然而,这需要做更多的工作。

用于"+y复制和"+p粘贴

Vim本机提供了一种在 vim 缓冲区和系统剪贴板之间复制粘贴的方法,使用"+y"*y。然后使用"+p或进行粘贴"*p。这将避免复制装订线中的相对数字或其他与 vim 不相关的随机标记

相关内容