问题描述
我尝试使用CTRL
+ V
粘贴VI编辑器文档中的内容,但CTRL
+ V
不被解释为粘贴。
最佳解决思路
首先,确保您处于编辑模式(按i
)。然后,如果您使用的是gnome-terminal
等终端模拟器(或从right-click菜单中选择”Paste”),则可以粘贴Ctrl
+ Shift
+ V
。
您也可以在粘贴之前在vim中键入:set paste
以禁用自动缩进等,然后在粘贴内容后粘贴:set nopaste
。
另请参阅stackoverflow.com上的this question以获取更多信息。
如果要复制/粘贴vim
中的行(而不是粘贴剪贴板内容),则需要查看yank命令。这可能有助于cheat sheet。
次佳解决思路
与普通文本编辑器(如Gedit)相比,Vi(和Vim)的工作方式非常不同。它也有一个非常陡峭的学习曲线。如果您想学习一些基本命令,请从this interactive tutorial开始。
但是,要回答你的问题。系统剪贴板的内容可以通过加号寄存器进行访问。因此,要从系统剪贴板粘贴某些东西,您可以在正常模式下按下:"+p
(不是同时,而是一个接一个地)。
第三种解决思路
-
如果要将粘贴内容复制到同一文件中,请使用
yank
和paste
。 -
如果要在终端间复制粘贴内容,请打开第一个文件,取出所需文本,然后在vim中打开第二个文件(例如
:tabnew /path/to/second/file
),然后按p
将其粘贴。 -
如果你想从vim复制粘贴内容到外部程序,你需要访问系统剪贴板。我假设你使用Ubuntu。 vim的GUI版本总是支持剪贴板,但是,如果您想从终端使用Vim,则必须检查X11剪贴板支持。
在控制台中输入:
$ vim --version | grep xterm
如果您发现-xterm_clipboard,您有两个选择:
1)自己编译vim,打开xterm_clipboard标志
2)卸载vim,改为安装gvim(vim-gtk或vim-gnome)。您可以通过从终端调用vim来坚持non-gui vim,就像以前一样。这一次当你检查你应该找到+ xterm_clipborad。
现在,当您在vim编辑器(例如“+ yy)中的+寄存器中抽取一些文本时,它也会被复制到系统剪贴板,您可以使用
Ctrl
+V
从外部程序(如gedit编辑器)中检索该剪贴板。 -
如果要从外部程序将粘贴内容复制到vim,首先通过
Ctrl
+C
将文本复制到系统剪贴板,然后在vim编辑器插入模式下,单击鼠标中间按钮(通常是滚轮)或按Ctrl
+Shift
+V
+V
粘贴。这些是4个基本的复制&粘贴与vim相关的条件。我希望这有帮助。
第四种思路
当我想将文本粘贴到终端中时,我总是使用Shift
+ Insert
,可以在所有终端程序中使用。
(这也是为什么我从来没有拿到笔记本电脑的原因,你不能按下Insert
键而没有按下辅助键)
第五种思路
使用鼠标的中心按钮插入您在其他地方突出显示的文字。
当您无法访问系统剪贴板时(例如在远程ssh会话中)
必须在vim的编辑/插入模式下
第六种思路
一旦你输入vi,按i
进入插入模式,右键单击终端,点击粘贴。
第七种思路
使用yank
和put
在vi中复制/粘贴文本行的详细说明
(在vi的命令模式下使用以下命令)
复制(YANK)
在vi中复制一行:
-
在命令模式下,将光标移动到需要复制的行并键入
yy
或键入Y
在vi中复制2行:
-
在命令模式下,将光标移动到需要复制的第一行并键入
2yy
或键入2Y
(同样,可以复制任意数量的行)
要将当前位置的所有行复制到文件末尾:
-
在命令模式下,将光标移动到需要复制的第一行并键入
yG
要将当前位置的所有文本复制到当前单词的结尾:
-
在命令模式下,将光标移动到需要复制文本的位置,然后键入
yw
要将当前位置的所有文本复制到行尾:
-
在命令模式下,将光标移动到需要复制文本的位置,然后键入
y$
粘贴(PUT)
在剪贴板中粘贴文本 – 在光标位置之后:
-
在命令模式下,键入
p
在剪贴板中粘贴文本 – 在光标位置之前:
-
在命令模式下,键入
P