Vim的粘贴快捷方式

Vim的粘贴快捷方式,vim,rc,Vim,Rc,我正在尝试在我的.vimrc中设置粘贴快捷方式 到目前为止,我已尝试重新映射Shift+Insert: noremap <S-Insert> <ESC>:paste<CR><S-Insert><ESC>:nopaste<CR> noremap:paste:nopaste …这不起作用。我还尝试映射系统剪贴板粘贴: noremap ´v <ESC>:set paste<CR>"*p<ESC&g

我正在尝试在我的
.vimrc
中设置粘贴快捷方式

到目前为止,我已尝试重新映射
Shift+Insert

noremap <S-Insert> <ESC>:paste<CR><S-Insert><ESC>:nopaste<CR>
noremap:paste:nopaste
…这不起作用。我还尝试映射系统剪贴板粘贴:

noremap ´v <ESC>:set paste<CR>"*p<ESC>:set nopaste<CR>
noremap'v:set-paste“*p:set-nopaste
…但它也不起作用。backtick
`
是我个人的leader键,用于几个自定义映射。我有一个德语键盘,可以轻松访问它

我做错了什么?我想,
“*p
是用来粘贴系统的剪贴板的……我希望
可以作为命令正常工作

非常感谢您的帮助。

如果您的Vim不是使用剪贴板支持构建的(
:echo拥有(“剪贴板”)
返回
0
),请使用更好的Vim

如果您的Vim是使用剪贴板支持构建的(
:echo具有(“剪贴板”)
返回
1
),请使用
“+p
”*p
,而无需
设置粘贴

如果
“+{command}
“*{command}
对您来说太多,您可以将未命名寄存器与
*
寄存器同步,方法是:

set clipboard^=unnamed
set clipboard^=unnamedplus
或使用
*
注册:

set clipboard^=unnamed
set clipboard^=unnamedplus
或使用两个寄存器:

set clipboard^=unnamed,unnamedplus
只需使用
p

如果仍然需要自定义映射,请执行以下操作:

nnoremap <key> "*p
nnoremap <key> "*P
xnoremap <key> "*p
xnoremap <key> "*P
nnoremap“*p
nnoremap“*P
xnoremap“*p
xnoremap“*P
如果您的Vim不是使用剪贴板支持构建的(
:echo具有(“剪贴板”)
返回
0
),请使用更好的Vim

如果您的Vim是使用剪贴板支持构建的(
:echo具有(“剪贴板”)
返回
1
),请使用
“+p
”*p
,而无需
设置粘贴

如果
“+{command}
“*{command}
对您来说太多,您可以将未命名寄存器与
*
寄存器同步,方法是:

set clipboard^=unnamed
set clipboard^=unnamedplus
或使用
*
注册:

set clipboard^=unnamed
set clipboard^=unnamedplus
或使用两个寄存器:

set clipboard^=unnamed,unnamedplus
只需使用
p

如果仍然需要自定义映射,请执行以下操作:

nnoremap <key> "*p
nnoremap <key> "*P
xnoremap <key> "*p
xnoremap <key> "*P
nnoremap“*p
nnoremap“*P
xnoremap“*p
xnoremap“*P
出于某种原因,
“*p
以及
“+p
始终手动工作,但从不在任何映射中为我工作-尽管我的“原始”vim没有剪贴板支持:
:echo有('clipboard')
返回
0

我刚刚测试了gVim,遇到了同样的问题,尽管这个gVim有剪贴板支持:
:echo有(“剪贴板”)
返回
1

但是,我找到了一些解决方法来获得所需的行为:

nnoremap `v <ESC>:set paste<CR><ESC>:r!xclip -o<CR>:set nopaste<CR><ESC>
nnoremap`v:设置粘贴:r!xclip-o:设置nopaste
你只需要安装
xclip
,这是一个剪贴板实用程序,存在于Manjaro、Arch、Debian和UbuntuUniverse中。我想它也适用于许多其他发行版,但我刚刚用命名的发行版进行了测试

此命令将vim设置为粘贴模式(禁用自动缩进和填充,以便粘贴时某些代码的格式不会弄乱),通过相应的xclip命令读取剪贴板缓冲区,并使用
:set nopaste

重置为正常缩进行为,原因是
“*p
以及
”+p
始终手动工作,但从不在任何映射中为我工作-尽管我的“原始”vim没有剪贴板支持:
:echo有('clipboard')
返回
0

我刚刚测试了gVim,遇到了同样的问题,尽管这个gVim有剪贴板支持:
:echo有(“剪贴板”)
返回
1

但是,我找到了一些解决方法来获得所需的行为:

nnoremap `v <ESC>:set paste<CR><ESC>:r!xclip -o<CR>:set nopaste<CR><ESC>
nnoremap`v:set-paste:r!xclip-o:set-nopaste
你只需要安装
xclip
,这是一个剪贴板实用程序,存在于Manjaro、Arch、Debian和UbuntuUniverse中。我想它也适用于许多其他发行版,但我刚刚用命名的发行版进行了测试


此命令将vim设置为粘贴模式(禁用自动缩进和填充,以便粘贴时某些代码的格式不会弄乱),通过相应的xclip命令读取剪贴板缓冲区,并使用
:set nopaste

重置为正常缩进行为您尝试过
noremap`v吗*p
?在任何映射之外,“*p
自身是否工作?是的,它确实工作…但映射不工作:/I是否有其他方法可以将粘贴行为映射到vim?包括粘贴前后的
:set paste
:set nopaste
(否则索引会出错)
:set paste
仅用于来自终端的文本,而不是从vim内部粘贴。哦,是的,可能我应该提到这一点:我说的是从剪贴板粘贴,因此我从其他地方复制了代码(终端、stackoverflow,…),因此,如果没有
:set paste
,我的缩进总是一团糟。由于手动调用
:set paste
,进入插入模式,点击
Shift+insert
等等,真是烦人和浪费时间。我想为此创建一些映射…您尝试过
noremap`v'*p
?是否
“*p
在任何映射之外可以自己工作?是的,它可以工作…但映射不工作:/I是否有其他方法可以将粘贴行为映射到vim?包括粘贴前后的
:set paste
:set nopaste
?(否则索引会被搞砸)
:设置粘贴
仅用于来自终端的文本,而不是从vim内部粘贴。哦,是的,可能我应该提到这一点:我说的是从剪贴板粘贴,因此我从其他地方复制了代码(终端、stackoverflow,…),因此,如果没有
:set paste
,我的缩进总是一团糟。硅