我尝试使用Ctrl + V在vi编辑器文档中粘贴内容,但Ctrl + V不会解释为粘贴。

评论

请注意,使用Vi的主要原因是未安装Vim。如果您安装了Vim,则值得使用它。除了在每个Unix安装中已经存在的Vi之外,Vi并没有真正的优势。我认为学习Vim的最好方法是打开终端仿真器(而不是从Vim内部)并键入vimtutor,它将使您在大约45分钟的时间内即可使用它。

+1 @BenMordecai-我已经很熟悉vi(从以前开始),包括它方便的sub-shell功能,但是需要刷新。很少的补习。像微风一样穿过它。谢谢。

#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 楼


如果要复制同一文件中的粘贴内容,请使用yankpaste
如果要跨终端复制粘贴内容,请打开第一个文件,拉出所需的文本,然后打开第二个文件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 楼

使用yankput在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 pasteictrl+shift+Vesc: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