Answers:
首先,请确保您处于编辑模式(按i)。然后,如果您位于类似的终端仿真器中,则可以使用Ctrl+ Shift+进行粘贴(或从右键菜单中选择“粘贴”)。Vgnome-terminal
您也可以:set paste
在粘贴之前输入vim以禁用自动缩进等。然后:set nopaste
在粘贴内容之后。
另请在stackoverflow.com上检查此问题以获取更多信息。
如果要复制/粘贴行vim
(而不是粘贴剪贴板内容),则需要签出yank命令。这是一个可能有用的备忘单。
I
区分大小写。小写字母i
是进入插入模式的常规方法。大写I
将光标移到行的开头,然后使您进入插入模式。
与普通文本编辑器(例如Gedit)相比,Vi(和Vim)的工作方式截然不同。它还具有相当陡峭的学习曲线。如果您想学习一些基本命令,请从本交互式教程开始。
但是,回答您的问题。可以通过加号寄存器访问系统剪贴板的内容。因此,要从系统剪贴板粘贴某些内容,可以在“普通”模式下按:("+p不是同时,而是一个接一个)。
vi
不使用vim
set :paste
。)
如果要复制同一文件中的粘贴内容,请使用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。
现在,当您在vim编辑器中的+寄存器中提取一些文本时(例如“ + yy”),它也被复制到系统剪贴板,您可以使用Ctrl+ 从外部程序(如gedit编辑器)中检索该文本V。
如果要将粘贴内容从外部程序复制到vim中,请先通过Ctrl+ 将文本复制到系统剪贴板中C,然后在vim编辑器插入模式下,单击鼠标中键(通常是滚轮)或按Ctrl+ Shift+ V粘贴。
这是与vim相关的4种基本复制和粘贴条件。我希望这有帮助。
vim-gtk
有xterm_clipboard
支持,而在Fedora xvim
上有支持。
当我要将文本粘贴到终端中时,我总是使用Shift+ Insert,在所有终端程序中均可使用。
(这也是为什么我永远都无法获得Insert不按辅助键就无法按下的笔记本电脑的原因)
Vi
/ Vim
!=终端;)
Ctrl+A
,Ctrl+C
也?
输入vi后,按i
进入插入模式,右键单击终端,然后单击粘贴。
i
。大写是I
做什么的?
i
。大写字母I
将光标移到行的开头,然后再进入插入模式,此处不需要。
使用yank
和复制和粘贴vi中的文本行的详细说明put
(在vi 的命令模式下使用以下命令)
复制(YANK)
要在vi中复制一行:
yy
或键入Y
要在vi中复制2行:
2yy
或键入2Y
(同样,可以复制任意数量的行)
要将所有行从当前位置复制到文件末尾:
yG
要将所有文本从当前位置复制到当前单词的末尾:
yw
要将所有文本从当前位置复制到行尾:
y$
粘贴(PUT)
要将文本粘贴到剪贴板中- 光标所在位置之后:
p
要将文本粘贴到剪贴板中- 光标所在的位置之前:
P
我遇到了一个问题,因为我的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”进行复制和粘贴了。
使用Linux或Mac上的Vim 8+,您现在可以简单地使用操作系统的本机粘贴(ctrl+shift+V
在Linux上,cmd+V
在Mac上)。不要按i
进入插入模式。
它将粘贴操作系统剪贴板的内容,保留空格和制表符,而无需添加自动缩进。这相当于老:set paste
,i
,ctrl+shift+V
,esc
,:set nopaste
方法。
您甚至不再需要安装+clipboard
or +xterm_clipboard
功能。此功能称为“包围式粘贴”。有关更多详细信息,请参见https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763
我只是想指出,在Windows上通过Git Bash使用Vim,您可以只使用p
鼠标或单击鼠标中键,而无需处于插入模式。通过PuTTY使用Vim ,您可以右键单击。并突出显示进行复制。
我注意到这一点是因为我在这里看不到这是Ubuntu的SE。
其他有用的命令:
您可以使用Ctrl+ Shift+ V粘贴终端版本的vim,但是对于GUI版本的vim like 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)
vimtutor
它将使您在大约45分钟的时间内达到您可以使用的位置。