San*_*mar 712 vim clipboard editor
与其他编辑器不同,vim商店将文本复制到自己的剪贴板中.因此,我很难从网页复制一些文本并将其粘贴到当前的工作文件中.碰巧我必须打开gedit或手动输入它.
我可以在系统的剪贴板上进行vim粘贴吗?
Con*_*ner 822
在"*
和"+
寄存器是系统的剪贴板(:help registers
).根据您的系统,他们可能会做不同的事情.例如,在不使用X11(如OSX或Windows)的系统上,该"*
寄存器用于读写系统剪贴板.在X11系统上,可以使用两个寄存器.有关:help x11-selection
详细信息,请参阅,但基本上"*
类似于X11的PRIMARY选择(通常使用鼠标复制您选择的内容并使用鼠标中键粘贴),"+
类似于X11的CLIPBOARD选项(适当的剪贴板).
如果一切都超过你的头脑,尝试使用"*yy
或"+yy
将一行复制到系统的剪贴板.假设您有适当的编译选项,那么一个或另一个应该可以工作.您可能希望将其重新映射到更方便的地方.例如,您可以放入vnoremap <C-c> "*y
〜/ .vimrc,以便可以直观地选择并按Ctrl+ c以拉到系统的剪贴板.
要知道,从系统剪贴板复制/粘贴将无法正常工作,如果:echo has('clipboard')
返回0.在这种情况下,Vim不是与编译+clipboard
功能,你将不得不安装一个不同的版本,无需重新编译.默认情况下,一些Linux发行版提供了最小的vim安装,但通常如果你安装了vim-gtk
软件包,你就可以获得额外的功能.
您还可以查看一下vim-gtk3
描述的选项'clipboard'
.在这种情况下,您可以:help cb
或:set clipboard=unnamed
将所有yanking/delete操作自动复制到系统剪贴板.在某些情况下,如果您将其他内容存储在剪贴板中,因为它会覆盖它,这可能会带来不便.
要粘贴,您可以使用:set clipboard=unnamedplus
或"+p
(再次,取决于您的系统和/或所需的选择),或者您可以将这些映射到其他内容.我明确地键入它们,但我经常发现自己处于插入模式.如果您处于插入模式,您仍然可以使用"*p
或粘贴适当的缩进<C-r><C-p>*
.见<C-r><C-p>+
.
还值得一提的是vim的:help i_CTRL-R_CTRL-P
选项(paste
).这使得vim进入一种特殊的"粘贴模式",禁用其他几个选项,允许您使用终端仿真器或多路复用器熟悉的粘贴快捷方式轻松粘贴到vim中.只需键入:help paste
以启用它,粘贴您的内容,然后键入:set paste
以禁用它.或者,您可以使用该:set nopaste
选项设置切换模式的键码(pastetoggle
).我建议使用寄存器而不是这些选项,但如果它们仍然太可怕,那么当你完善你的vim印章时,这可能是一个方便的解决方法.
有关:help pastetoggle
详细信息,请参阅.
nee*_*eel 135
您可以通过gnome-terminal的快捷方式复制到vim中进行粘贴.使文件处于插入模式并使用
Ctrl+ Shift+ v.
请事先记住
:set paste
Run Code Online (Sandbox Code Playgroud)
避免弄乱压痕.
Tod*_*obs 39
在我的Linux系统上,+
和*
寄存器映射到X11选择,可以用鼠标中键粘贴.当:set clipboard=unnamed
和:set clipboard=unnamedplus
使用,则该寄存器映射到剪贴板,并且可以与CTRL-V被粘贴.
具体细节似乎与配置和系统有关,因此您的里程肯定会有所不同.不过,它肯定会让你指向正确的方向.
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
lis*_*is2 39
因为我的配置适用于复制和粘贴
" copy and paste
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <ESC>"+pa
Run Code Online (Sandbox Code Playgroud)
Dan*_*tle 33
这将是您在vimrc中为此目的所需的行:
set clipboard+=unnamed " use the clipboards of vim and win
set paste " Paste from a windows or from vim
set go+=a " Visual selection automatically copied to the clipboard
Run Code Online (Sandbox Code Playgroud)
jav*_*301 33
Shift+ 右键单击 -> 粘贴
对我有用
iva*_*ncz 21
我认为这个问题应该得到一个更客观的答案.
进入粘贴模式
离开粘贴模式
您粘贴了文本,然后您可以再次键入.
The*_*emz 16
剪贴板
还有就是可以存放选择一个特殊的寄存器,它就是"*寄存器.没有什么是摆在这里除非选择文本的相关信息即将改变(例如,用鼠标左键点击某处),或在其他应用程序要粘贴选定的文本.然后将文本放在"*寄存器中.例如,要剪切一条线并使其成为当前选择/将其放在CLIPBOARD上:
"*dd
Run Code Online (Sandbox Code Playgroud)
类似地,当您想要粘贴来自另一个应用程序的选择时,例如,通过单击鼠标中键,选择将首先放入"*寄存器,然后像任何其他寄存器一样放入'.例如,放置选择(CLIPBOARD的内容):
"*p
Run Code Online (Sandbox Code Playgroud)
登记 E354
> There are nine types of registers:
> 1. The unnamed register ""
> 2. 10 numbered registers "0 to "9
> 3. The small delete register "-
> 4. 26 named registers "a to "z or "A to "Z
> 5. four read-only registers ":, "., "% and "#
> 6. the expression register "=
> 7. The selection and drop registers "*, "+ and "~
> 8. The black hole register "_
> 9. Last search pattern register "/
Run Code Online (Sandbox Code Playgroud)
从剪贴板粘贴
1. Clipboard: Copy
2. Vim insertmode, middle mouse key
Run Code Online (Sandbox Code Playgroud)
检查终端中的X11剪贴板支持
当您想在终端中运行Vim时,您需要查找使用剪贴板支持编译的Vim版本.检查X11-clipboard支持,从控制台输入:
% vim --version
Run Code Online (Sandbox Code Playgroud)
如果你看到"+ xterm_clipboard",你很高兴.
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
X服务器维护三个选项,称为:
小学,中学和剪贴板
PRIMARY选择通常用于通过鼠标中键实现复制和粘贴.应用程序不常使用SECONDARY和CLIPBOARD选项.
http://linux.die.net/man/1/xsel
小智 12
我尝试了上面的建议,但没有一个在我的环境中工作.(Windows PuTTY克隆ssh)
一些额外的谷歌搜索出现了:https: //unix.stackexchange.com/questions/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard
其中一条评论建议使用SHIFT+INSERT
哪种方法从我的桌面剪贴板粘贴到Vim的缓冲区.Ctrl-C
已经在努力从Vim复制到桌面的剪贴板.
s_s*_*nal 10
这些组合键适用于任何操作系统。
使用鼠标选择目标文本,并参考按键序列进行复制、剪切和粘贴。
使用 Linux 或 Mac 上的 Vim 8+,您现在可以简单地使用操作系统的本机粘贴(ctrl+shift+V
在 Linux 上、cmd+V
在 Mac 上)。不要按i
进入插入模式。
它将粘贴操作系统剪贴板的内容,保留空格和制表符,而不添加自动缩进。它相当于旧的:set paste
, i
, ctrl+shift+V
, esc
,:set nopaste
方法。
您甚至不再需要安装+clipboard
或+xterm_clipboard
vim 功能。此功能称为“括号粘贴”。有关更多详细信息,请参阅将文本粘贴到 vim 时关闭自动缩进
复制到系统剪贴板:
"+y
从系统剪贴板粘贴一些内容:
"+P
在光标前粘贴或"+p
在光标后粘贴。要了解更多其工作原理:从 Vim 到其他程序复制并粘贴!
小智 6
对于vim安装不支持*和+寄存器的人员的快速说明.没有必要从剪贴板下载新的vim安装进行粘贴.这是另一种方法:
1)安装parcellite(内存占用少的剪贴板管理器);
2)在.vimrc文件中,添加以下内容:
command Clip r !parcellite -c
Run Code Online (Sandbox Code Playgroud)
3)重启vim.
现在当您输入:Clip作为ex命令时,剪贴板的内容将粘贴在光标处.您还可以将新命令映射到功能键,以便能够通过一次击键执行此操作.
最简单的解决方案,也可以通过以下ssh
方式在不同的 Linux 机器之间工作:
检查 vim 是否支持 X-11 剪贴板:vim --version | grep clipboard
. 如果它报告回来-clipboard
,-xterm_clipboard
你应该安装vim-gtk
或vim-gnome
(arch linux上的gvim)
将以下行添加到您的.vimrc
:
Run Code Online (Sandbox Code Playgroud)set clipboard=unnamedplus set paste
ssh -Y machine
现在复制和粘贴应该在一台机器上完全按预期工作,并且通过仅y
用于 yank 和p
用于粘贴在不同的机器上。注意.vimrc
在要使用此功能的所有机器上修改。
我在 2017 年年vim
中iTerm2
作为主要开发环境运行的 Macbook Pro 上遇到了这个问题。
正如其他答案所建议的那样,我运行vim --version
并注意到它返回-clipboard
,这意味着vim
我的机器附带的版本尚未使用剪贴板选项进行编译。
homebrew
for的包vim
似乎可以使用该clipboard
选项进行编译,因此对我来说解决方法是:
brew install vim
set clipboard+=unnamed
到我的~/.vimrc
文件iTerm2
归档时间: |
|
查看次数: |
534023 次 |
最近记录: |