是否可以在Vim中以插入模式粘贴?
是否可以在Vim中以插入模式粘贴?
Answers:
在插入模式下命中 CTRL-R {register}
例子:
CTRL-R *
将插入剪贴板的内容 CTRL-R "
(未命名的寄存器)插入最后的删除或取消。 要在vim的帮助中找到此内容 :h i_ctrl-r
CTRL-R *
仅适用于GVIM或编译为与x交互的版本。输入vim --version
并查找+xterm_clipboard
。如果没有,则需要其他版本的vim。(vim.wikia.com/wiki/Accessing_the_system_clipboard)
+clipboard
,您实际上只需要,但是如果有的+xterm_clipboard
话,无论如何都应该拥有它。在某些操作系统xterm_clipboard
上不适用。
*
,单击鼠标中键即可+
将其粘贴,而传统的复制/粘贴操作则可以使用。standard.freedesktop.org/clipboards-spec/clipboards-latest.txt
如果您不希望Vim破坏输入的粘贴文本中的格式,则可能还需要考虑使用::set paste
。这样可以防止Vim重新标记您的代码。完成粘贴后,:set nopaste
将恢复正常行为。
通过向set pastetoggle=<F2>
.vimrc中添加类似内容,也可以通过一个键来切换模式。有关切换自动缩进的更多详细信息,请参见此处。
:set nopaste
将禁用粘贴模式
:set paste!
在命令历史记录中将粘贴设置得很近,因此您只需按':',然后向上箭头并添加'!'。
:set paste!
谢谢是什么是更好还是不同:)
!
在命令的最终vim
切换接通和断开命令。这样,您不必键入:set nopaste
,就可以向上滚动历史记录并:set paste!
再次运行相同的命令()。
不,不是直接。 但是,您可以做的是快速退出插入模式,以进行单个普通模式操作,Ctrl-O然后从那里粘贴,最后将您置于插入模式,结束操作。
关键组合: Ctrl-O p
编辑:有趣。看来确实有其他几种人列出来的方法。
esc + p
呢
esc + p + i
打字更容易CTRL-R + "
CTRL-R "
。例如,尽管vimrc设置可以更改此设置,但是使用粘贴到新行中的内容CTRL-O p
会使其缩进消失。
在插入模式下,您可以使用Ctrl-R {register}
,其中寄存器可以是:
+
对于剪贴板,*
对于X剪贴板(X中最后选择的文本), "
对于未命名的寄存器(Vim中的最后删除或删除),:h registers
)。Ctrl-R {register}
插入文本,就像输入文本一样。
Ctrl-R Ctrl-O {register}
插入带有原始缩进的文本。
Ctrl-R Ctrl-P {register}
插入文本并自动缩进。
Ctrl-O
可用于在返回插入模式之前运行任何普通模式命令,因此
Ctrl-O "+p
也可以使用,例如。
有关更多信息,请参见 :h i_ctrl-r
您可以使用它从剪贴板粘贴Ctrlv:
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
这是通过以下方式将视觉选择拖入剪贴板的Ctrlc:
vnoremap <C-c> "+y
如果您还希望默认情况下在普通模式下使用剪贴板进行经典vim摇动/粘贴(y/ p),则可以使用以下配置选项:
set clipboard=unnamedplus
使用此配置,您可以例如首先以普通模式拉动,然后以Ctrlv插入模式粘贴。另外,您可以粘贴来自不同vim实例和不同应用程序的文本。
另一个选择是:
set clipboard=unnamed
然后,您只需在X环境中拖动鼠标即可选择某些内容,然后将其粘贴到vim中。但是(由于某种原因)您将无法y在Vim中拖拽某些东西(),然后再拖shiftinsert到其他地方,这可能是非常有限的。
有关此的Vim文档:http : //vim.wikia.com/wiki/Accessing_the_system_clipboard
对于从自定义寄存器粘贴,您可以遵循其他答案:)。这个答案主要是关于将Vim与系统剪贴板集成在一起。
请注意,对于set clipboard=unnamedplus
和set clipboard=unnamed
工作,你需要使用gvim的或vimx( vim-X11
):那些被编译的+xterm_clipboard
。您可以选择将其放入.bashrc
别名vim
中vimx
:
if [ -e /usr/bin/vimx ]; then
alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi
您可以在vim +xterm_clipboard
提供的信息中找到您的vim vim --version
。
:set paste
和拜占庭的默认行为<leader><leader> * y
甚至是遥不可及的?不要听起来太投入,我真的很好奇这反映了什么vim哲学,或者仅仅是历史的不幸。
inoremap <S-Insert> <F12><C-r>+<F12>
在Gvim中使用Shift + Insert (我将F12用作pastetoggle)。谢谢。
如果将Vim设置为使用系统剪贴板(:set clipboard=unnamed
),则可以使用Shift+ 粘贴在Vim中复制的任何文本Insert。Shift+ Insert只是整个操作系统范围内的粘贴键组合(Ctrl+ Insert是相应的“副本”)。
p
文本粘贴到剪贴板中吗?
Shift + Insert
粘贴文本之前,我们需要处于插入模式。
您也可以使用鼠标中键在插入模式下粘贴(仅Linux)。