我经常想将文本从:terminal
窗口复制到普通文本缓冲区。现在,我exit
进行shell会话并从历史记录中复制。
必须有更好的方法。
答案 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中效果更好。