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

rkt*_*kta 0 vim

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

必须有一个更好的方法。

Fuz*_*zzy 8

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

:tmap <S-Insert> <C-W>"+
Run Code Online (Sandbox Code Playgroud)

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


rkt*_*kta 5

复制

要从终端窗口进行复制,请按CTRL-W N(这是大写字母N)1CTRL-\ 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,我保留了原始符号


Fin*_*inn 5

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

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