如何在Vim的终端模式下复制和粘贴?

时间:2019-02-17 14:23:30

标签: vim

我经常想将文本从:terminal窗口复制到普通文本缓冲区。现在,我exit进行shell会话并从历史记录中复制。

必须有更好的方法。

3 个答案:

答案 0 :(得分:3)

复制

要从终端窗口复制,请按 CTRL-W N (这是大写字母N) 1 CTRL- \ CTRL-N (这不是不是大写字母N)进入正常模式。从那里,您可以使用所有常用的vim命令来复制和粘贴内容。

进入插入模式将使您回到Shell。


粘贴

要从寄存器粘贴到终端窗口,您必须处于“终端作业”(“插入”)模式。

CTRL-W“ ,然后按一下寄存器。


:help Terminal-mode告诉我们:

  

当作业正在运行时,终端的内容在   工作。包括光标位置。输入的密钥将发送到作业。   终端内容可以随时更改。这称为终端作业   模式。

     

使用CTRL-W N(或'termkey'N)切换到终端正常模式。现在   终端窗口的内容在Vim的控制下,作业输出为   暂停。 CTRL- \ CTRL-N也是一样。

     

[...]

     

在终端普通模式下,您可以使用通常的Vim移动光标   命令,视觉标记文本,拉动文本等。但是您无法更改   缓冲区的内容。将启动插入模式的命令,例如   'i'和'a',返回到终端作业模式。

有关终端窗口中更有用的命令,请参见:h terminal-typing


1 不幸的是,vim帮助没有告诉您它是大写N,我保留了原始符号

答案 1 :(得分:0)

.vimrc中的剪贴板设置设置为使用系统剪贴板作为Vim的剪贴板。取决于您的操作系统,它可能有所不同,假设您使用的是Mac OS:set clipboard=unnamedplus

然后您可以使用y命令进行复制,然后仅按Cmd + V粘贴到另一个应用程序上,请记住要通过单击任意位置退出终端的插入模式或按Ctrl+\ Ctrl+n

答案 2 :(得分:0)

可以使用Shift + Insert作为快捷方式从剪贴板粘贴到正在运行的终端会话中。像这样设置映射

:tmap <S-Insert> <C-W>"+

这将导致从+寄存器粘贴。或者,使用*寄存器,有时在MS Windows中效果更好。