#1 楼
首先,请确保您处于编辑模式(按i)。然后,如果您位于gnome-terminal
之类的终端仿真器中,则可以使用Ctrl + Shift + V进行粘贴(或从右键单击菜单中选择“粘贴”)。在粘贴之前以禁用自动缩进等。然后在粘贴内容后执行:set paste
。也请在stackoverflow.com上查询此问题以获取更多信息。
如果要复制/粘贴
:set nopaste
中的行(而不是粘贴剪贴板内容),您需要签出yank命令。这是一个可能有用的备忘单。评论
我认为,如果您将鼠标光标放在上面,则无法使用Ctrl + Shift + V粘贴。
–黄永Al
13年2月16日在14:34
请注意,我区分大小写。小写字母i是进入插入模式的常规方式。大写字母I将光标移到行的开头,然后将您进入插入模式。
– Ben Mordecai
13年2月16日在19:01
#2 楼
与普通的文本编辑器(例如Gedit)相比,Vi(和Vim)的工作方式截然不同。它还具有相当陡峭的学习曲线。如果您想学习一些基本命令,请从此交互式教程开始。但是,请回答您的问题。可以通过加号寄存器访问系统剪贴板的内容。因此,要从系统剪贴板粘贴某些内容,可以在“普通”模式下按:“ + p(不是同时,而是一个接一个)。
评论
直到现在我还是不知道。另外,+ 1用于链接另一个很棒的vim教程。
–阿提拉(Ottila O)。
13年2月16日在8:37
说到编辑器的学习曲线,有“一些普通编辑器的经典学习曲线”,blog.thilelli.net / public / store / attached / curves.jpg。
–喜剧
13年2月16日在15:02
在GNOME终端中,复制和粘贴的快捷方式分别是Ctrl-Shift-C和Ctrl-Shift-V。
– Flimm
13年2月23日在9:17
我尝试依次按下“ , + 和 p ,也依次按下” 和 p ,什么也没有发生。我做错了什么?我用vi而不是vim
–德米特里·科罗里奥夫(Dmitry Koroliov)
2013年12月13日13:51
那是正确的答案。使用例如。 Ctrl-Shift-v仅适用于最简单的内容(如果在终端中,换行和缩进可能会真的出错,而您忘记使用set:paste)。
–森纳
18 Mar 11 '18 at 17:37
#3 楼
如果要复制同一文件中的粘贴内容,请使用
yank
和paste
。如果要跨终端复制粘贴内容,请打开第一个文件,拉出所需的文本,然后打开第二个文件vim中的文件(例如
:tabnew /path/to/second/file
),然后按p
粘贴。如果要将粘贴内容从vim复制到外部程序,则需要访问系统剪贴板。我假设您使用Ubuntu。 GUI版本的vim始终具有剪贴板支持,但是,如果您想从终端上使用Vim,则必须检查X11-剪贴板支持。
在控制台中,键入:
$ vim --version | grep xterm
如果找到-xterm_clipboard,则有两个选择:
1)自己编译vim,将xterm_clipboard标志置于
2)卸载vim,改为安装gvim(vim-gtk或vim-gnome)。您可以通过从终端调用vim来坚持使用非gui vim,就像以前一样。这次,当您进行检查时,应该会找到+ xterm_clipborad。您可以使用Ctrl + V从外部程序(如gedit编辑器)中检索。
如果要将粘贴内容从外部程序复制到vim,请首先将文本复制到系统剪贴板通过Ctrl + C,然后在vim编辑器插入模式下,单击鼠标中键(通常是滚轮)或按Ctrl + Shift + V进行粘贴。
这些是与之相关的4种基本复制和粘贴条件vim。希望对您有所帮助。
评论
:tabnew / path / to / second / file有什么意义?您可以在第一个文件中进行拉/复制/剪切,打开第二个文件:vi / path / to / second / file并粘贴(p / P),实现完全相同的操作。至少就我而言...还是因为我确实启用了+ xterm_clipboard vim功能?还是还有更多的新功能?
– Cbhihe
2014年10月2日在17:39
在Ubuntu上,vim-gtk具有xterm_clipboard支持,而在Fedora上,xvim具有它。
–icc97
18年6月18日在1:58
#4 楼
当我想将文本粘贴到终端时,在所有终端程序中都可以使用时,我总是使用Shift + Insert。按辅助键)评论
Vi / Vim!=终端;)
– 0xC0000022L
13年2月17日在17:01
为此+1。您还用来执行Ctrl + A,Ctrl + C组合键吗?
– Arup Rakshit
13年12月28日在18:18
如果在DE内部使用终端,通常只需要使用鼠标选择文本并使用Ctrl + Shift + C进行复制。
– Magnus Jonsson
2014年1月2日,14:38
Shift + Insert在gvim中也可以使用。 (如果有任何区别,我正在运行Ubuntu 13.10。)
– eksortso
2014年1月20日17:27
最好的解决方案。首先打开文件。然后按I进行插入模式,然后按Shift +插入,然后按Esc,然后按:wq!。保存并退出文件。完成:)
–Marty_in_a_Box
20年5月7日在20:07
#5 楼
使用鼠标的中心按钮可以将您突出显示的文本插入其他位置。当您无权访问系统剪贴板(例如,在远程SSH会话中)时,此功能很有用。
Vim必须处于编辑/插入模式。
评论
如果您使用的笔记本电脑只有触摸板,该怎么办?这样您的解决方案将无法正常工作。
– Phemelo Khetho
20年4月5日在10:12
#6 楼
输入vi后,按i
进入插入模式,右键单击终端,单击粘贴。评论
我以为是小写的我。我做什么大写?
– Flimm
13年2月23日在9:16
@Flimm,在本·莫迪凯(Ben Mordecai)关于另一个答案的评论中已经进行了解释。
– sierrasdetandil
13年2月23日在19:42
我已将答案编辑为小写i。在进入插入模式之前,大写的我将光标移动到行的开头,这里不需要。
– Flimm
13年2月23日在20:04
#7 楼
使用yank
和put
在vi中复制/粘贴文本行的详细说明(在vi的命令模式下使用以下内容)
复制(YANK)
要在vi中复制一行,请执行以下操作:
在命令模式下,将光标移动到需要复制的行,然后键入
yy
或键入Y
要在vi中复制2行:
在命令模式下,将光标移动到需要复制的第一行,然后键入
2yy
或键入2Y
(同样,可以复制任意行)
要将所有行从当前位置复制到文件末尾:
在命令模式下,将光标移动到需要复制的第一行,然后键入
yG
将所有文本从当前位置复制到末尾当前单词的含义:
在命令模式下,将光标移至需要复制文本的位置,然后键入
yw
要将所有文本从当前位置复制到该行的末尾,请执行以下操作:
在命令模式下,将光标移动到需要复制文本的位置,然后键入
y$
粘贴(PUT)
将文本粘贴到剪贴板中-光标位置之后:
在在命令模式下,键入
p
要在剪贴板中粘贴文本-在光标位置之前:
在命令模式下,键入
P
#8 楼
使用Linux或Mac上的Vim 8+,您现在可以简单地使用操作系统的本机粘贴(在Linux上为ctrl+shift+V
,在Mac上为cmd+V
)。不要为插入模式按i
。它将粘贴OS剪贴板的内容,保留空格和制表符,而无需添加自动缩进。它等效于旧的
:set paste
,i
,ctrl+shift+V
,esc
,:set nopaste
方法。您甚至不需要安装
+clipboard
或+xterm_clipboard
vim功能。此功能称为“包围式粘贴”。有关更多详细信息,请参见https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763 评论
这就是我要寻找的答案。由于Vim在gnu / linux发行版中不是默认设置,因此即使在ubuntu中也需要安装它。此外,Vi的向上/向下按钮在ubuntu上不起作用,也没有高亮显示。
– snr
19年8月20日在10:11
为什么这个选票没有得到明显提高?!
–jouell
20-3-8的3:38
#9 楼
我遇到了一个问题,因为我的Vim安装不支持剪贴板:vim --version | grep clip
-clipboard +insert_expand +path_extra +user_commands
+emacs_tags -mouseshape +startuptime -xterm_clipboard
我安装了vim-gnome(支持剪贴板),然后再次检查:
vim --version | grep clipboard
+clipboard +insert_expand +path_extra +user_commands
+emacs_tags +mouseshape +startuptime +xterm_clipboard
现在我可以分别使用“ + y”和“ + p”复制和粘贴了。
评论
这解决了我的问题!
– astrojuanlu
18年11月12日在9:27
#10 楼
首先,检查您的vim是否已安装剪贴板支持:echo has('clipboard')
如果返回1,则说明您有剪贴板支持
要复制到剪贴板,请检查必须选择您的目标,例如一段
vip
,然后一段"+y
,这意味着将所选部分复制到寄存器+
中,或者您可以简单地以普通模式键入:"+yip
,这意味着:复制到寄存器+
复制内部段落。 要以普通模式从剪贴板粘贴,您可以:
"+p
在插入模式下,只需按Ctrl-rCtrl-o +。 Tha将插入剪贴板中的内容并保留剪贴板上的所有缩进。
如果要将整个缓冲区复制到剪贴板,则可以:
:%y+
% ........ the whole file
y ........ yank (copy)
+ ........ to the clipboard
要将最后一个命令复制到剪贴板:
:let @+=@:
要将最后一个搜索复制到剪贴板:
:let @+=@/
从标记“ a”复制到标记“ b”到剪贴板:
:'a,'b y+
要测试打开的任何功能您可以使用剪贴板
:@+ (and then type Enter)
:call FunctionName() (and then type Enter)
查看剪贴板上的内容:
:reg +
复制所有行剪贴板上有“样式”的您可以:
:let @a=""
:[range]g/pattern/y A
:let @+=@a
:let @a="" ............ cleanses the register 'a'
:[range]g/pattern/y A append to the register A every line with pattern
:let @+=@a ............ copy register 'a' to the clipboard
#11 楼
您可以使用Ctrl + Shift + V粘贴终端版本的vim,但是对于GUI版本vim(例如Neovim-Qt
),使用Ctrl + Shift + V从系统剪贴板粘贴文本根本无法工作。您必须在vim编辑器中访问剪贴板"+
或"*
。 在
.vimrc
中添加新的键绑定将仅执行复制/粘贴命令:" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
#12 楼
如果您是root用户:Ctrl + Shift + V如果您不是root用户:请中心单击鼠标。
#13 楼
我只想指出,在Windows上通过Git Bash使用Vim时,您只需使用p
或单击鼠标中键即可,而无需处于插入模式。通过PuTTY使用Vim,您可以右键单击。复制时要突出显示。我注意到这一点是因为我在这里看不到这是Ubuntu的SE。 />
yy(行数)-取消(复制)
p-在下面粘贴行当前行
Shift + p-在当前行上方粘贴行
u-撤消
r-重做
i -插入模式
v-可视模式
评论
在Windows Git Bash上,这对我不起作用。您使用的是哪个控制台,minty或Windows cmd?
– Wisbucky
19年7月17日在23:16
我相信那是薄荷的。
–泰勒·克里斯蒂安(Tyler Christian)
19年7月22日在15:31
评论
请注意,使用Vi的主要原因是未安装Vim。如果您安装了Vim,则值得使用它。除了在每个Unix安装中已经存在的Vi之外,Vi并没有真正的优势。我认为学习Vim的最好方法是打开终端仿真器(而不是从Vim内部)并键入vimtutor,它将使您在大约45分钟的时间内即可使用它。+1 @BenMordecai-我已经很熟悉vi(从以前开始),包括它方便的sub-shell功能,但是需要刷新。很少的补习。像微风一样穿过它。谢谢。