粘贴 Vim 的快捷方式
Paste shortcut for Vim
我正在尝试在 .vimrc
中设置粘贴快捷方式。
到目前为止,我已经尝试重新映射 Shift+Insert
:
noremap <S-Insert> <ESC>:paste<CR><S-Insert><ESC>:nopaste<CR>
...没有用。我也试过映射系统剪贴板粘贴:
noremap ´v <ESC>:set paste<CR>"*p<ESC>:set nopaste<CR>
...但它也没有用。反引号 `
是我用于几个自定义映射的个人领导键。我有一个德语键盘,这个东西很容易访问。
我做错了什么?我认为 "*p
用于粘贴系统的剪贴板...我希望 <S-Insert>
作为命令正常工作。
任何帮助将不胜感激。
如果您的 Vim 没有 内置剪贴板支持 (:echo has('clipboard')
returns 0
),获得更好的 Vim.
如果您的 Vim 是 内置的剪贴板支持 (:echo has('clipboard')
returns 1
),请使用 "+p
或 "*p
您不需要 set paste
.
如果 "+{command}
和 "*{command}
对您来说太多了,您可以将未命名寄存器与 *
寄存器同步:
set clipboard^=unnamed
或使用 *
注册:
set clipboard^=unnamedplus
或两个寄存器都具有:
set clipboard^=unnamed,unnamedplus
并简单地使用 p
.
如果您仍然想要自定义映射:
nnoremap <key> "*p
nnoremap <key> "*P
xnoremap <key> "*p
xnoremap <key> "*P
出于某种原因 <S-Insert>
和 "*p
以及 "+p
总是手动工作,但对我来说从来没有在任何映射中工作 - 尽管我的 "original" vim 没有剪贴板支持::echo has('clipboard')
returns 0
.
我刚刚测试了 gVim 并遇到了同样的问题,尽管这个 gVim 支持剪贴板::echo has('clipboard')
returns 1
.
但是,我找到了一些解决方法来获得所需的行为:
nnoremap `v <ESC>:set paste<CR><ESC>:r!xclip -o<CR>:set nopaste<CR><ESC>
只需安装 xclip
,一个存在于 Manjaro、Arch、Debian 和 Ubuntu 宇宙中的剪贴板实用程序。我想它也适用于许多其他发行版,但我刚刚用命名的发行版测试了它。
此命令将 vim 设置为粘贴模式(禁用自动缩进和其他东西,以便粘贴时某些代码的格式不会弄乱),通过相应的 xclip 命令读取剪贴板缓冲区,并重置:set nopaste
.
的正常缩进行为
我正在尝试在 .vimrc
中设置粘贴快捷方式。
到目前为止,我已经尝试重新映射 Shift+Insert
:
noremap <S-Insert> <ESC>:paste<CR><S-Insert><ESC>:nopaste<CR>
...没有用。我也试过映射系统剪贴板粘贴:
noremap ´v <ESC>:set paste<CR>"*p<ESC>:set nopaste<CR>
...但它也没有用。反引号 `
是我用于几个自定义映射的个人领导键。我有一个德语键盘,这个东西很容易访问。
我做错了什么?我认为 "*p
用于粘贴系统的剪贴板...我希望 <S-Insert>
作为命令正常工作。
任何帮助将不胜感激。
如果您的 Vim 没有 内置剪贴板支持 (:echo has('clipboard')
returns 0
),获得更好的 Vim.
如果您的 Vim 是 内置的剪贴板支持 (:echo has('clipboard')
returns 1
),请使用 "+p
或 "*p
您不需要 set paste
.
如果 "+{command}
和 "*{command}
对您来说太多了,您可以将未命名寄存器与 *
寄存器同步:
set clipboard^=unnamed
或使用 *
注册:
set clipboard^=unnamedplus
或两个寄存器都具有:
set clipboard^=unnamed,unnamedplus
并简单地使用 p
.
如果您仍然想要自定义映射:
nnoremap <key> "*p
nnoremap <key> "*P
xnoremap <key> "*p
xnoremap <key> "*P
出于某种原因 <S-Insert>
和 "*p
以及 "+p
总是手动工作,但对我来说从来没有在任何映射中工作 - 尽管我的 "original" vim 没有剪贴板支持::echo has('clipboard')
returns 0
.
我刚刚测试了 gVim 并遇到了同样的问题,尽管这个 gVim 支持剪贴板::echo has('clipboard')
returns 1
.
但是,我找到了一些解决方法来获得所需的行为:
nnoremap `v <ESC>:set paste<CR><ESC>:r!xclip -o<CR>:set nopaste<CR><ESC>
只需安装 xclip
,一个存在于 Manjaro、Arch、Debian 和 Ubuntu 宇宙中的剪贴板实用程序。我想它也适用于许多其他发行版,但我刚刚用命名的发行版测试了它。
此命令将 vim 设置为粘贴模式(禁用自动缩进和其他东西,以便粘贴时某些代码的格式不会弄乱),通过相应的 xclip 命令读取剪贴板缓冲区,并重置:set nopaste
.