我经常想从:terminal
窗口复制文本到普通的文本缓冲区。目前我通过退出shell会话并从历史记录中复制。
一定有更好的方法。
从终端窗口复制,请按 CTRL-W N (这是大写字母N)1 或者 CTRL-\ CTRL-N(这不是大写字母N) 进入正常模式。在此之后,您可以使用所有通常的vim命令来复制和粘贴内容。
进入插入模式将使您返回到您的shell。
要将寄存器中的内容粘贴到终端窗口中,您必须处于终端作业(“插入”)模式。
按下 CTRL-W ",然后输入寄存器。
:help 终端模式
告诉我们:
当作业运行时,终端的内容受到作业的控制。包括光标位置。键入的键将发送到作业中。终端的内容可以随时更改。这称为终端作业模式(Terminal-Job mode)。
使用CTRL-W N(或'termkey' N)切换到终端正常模式。现在终端窗口的内容在Vim的控制下,作业输出被暂停。CTRL- \ CTRL-N也是相同的。
[...]
在终端正常模式下,您可以使用通常的Vim命令移动光标,可视化标记文本、复制、剪切等。但您不能更改缓冲区的内容。会进入插入模式的命令,例如“i”和“a”,将返回到终端作业模式。
请参阅:h 终端键入
以在终端窗口中使用更多有用的命令。
1很遗憾vim帮助文档没有告诉你要用大写的N,我保留了原来的表示法。
可以使用Shift+Insert作为一个快捷键,将剪贴板中的内容粘贴到正在运行的终端会话中。设置映射方式如下:
:tmap <S-Insert> <C-W>"+
这将导致从+
寄存器中粘贴。 或者使用*
寄存器,在MS Windows中有时效果更好。
.vimrc
文件中设置剪贴板选项,以使用系统剪贴板作为 Vim 的剪贴板。由于操作系统不同可能会有所不同,假设您在使用 Mac OS: set clipboard=unnamedplus
然后您可以使用 y
命令复制,用 Cmd + V 在其他应用程序中粘贴。记得通过单击任何地方或按 Ctrl+\ Ctrl+n
键退出终端的插入模式。