代码之家  ›  专栏  ›  技术社区  ›  Amir Rachum

在插入模式下粘贴?

vim
  •  345
  • Amir Rachum  · 技术社区  · 14 年前

    可以在VIM中以插入模式粘贴吗?

    10 回复  |  直到 6 年前
        1
  •  407
  •   rgalbo    7 年前

    当处于插入模式时,点击 CTRL-R {register}

    实例:

    • CTRL-R * 将插入剪贴板的内容
    • CTRL-R " (未命名的寄存器)插入最后一个删除或扬克。

    在Vim的帮助类型中找到这个 :h i_ctrl-r

        2
  •  213
  •   Peter Mortensen icecrime    6 年前

    如果您不希望Vim在传入的粘贴文本中管理格式,您可能还需要考虑使用: :set paste . 这将阻止Vim重新标记您的代码。粘贴完成后, :set nopaste 将恢复正常行为。

    也可以通过添加诸如 set pastetoggle=<F2> 给你的Vimrc。有关切换自动缩进的详细信息如下 here .

        3
  •  115
  •   Zenadix    8 年前

    不,不是直接的。 但是,您可以快速退出一个正常模式操作的插入模式 CTRL O 然后从那里粘贴,最后将您放回插入模式。

    关键组合: CTRL O

    编辑: 有趣。的确,有一种方法可以像其他几个人列出的那样。

        4
  •  25
  •   Zaz Volodymyr Null    10 年前

    在插入模式下,可以使用 Ctrl-R {register} 在哪里 登记 可以是:

    • + 对于剪贴板,
    • * 对于X剪贴板(X中最后选定的文本),
    • " 对于未命名寄存器(VIM中的最后一次删除或拉入),
    • 或其他一些(参见 :h registers )

    ctrl-r注册 插入文本,就像键入的一样。

    Ctrl-R Ctrl-O {register} 插入带有原始缩进的文本。

    Ctrl-R Ctrl-P {register} 插入文本并自动缩进。

    Ctrl-O 可用于在返回到插入模式之前运行任何正常模式命令,因此
    Ctrl-O "+p 例如,也可以使用。

    有关详细信息,请使用 :h i_ctrl-r

        5
  •  25
  •   clime    7 年前

    您可以使用它从剪贴板粘贴 Ctrl键 V :

    set pastetoggle=<F10>
    inoremap <C-v> <F10><C-r>+<F10>
    

    这是为了将视觉选择拉入剪贴板 Ctrl键 C :

    vnoremap <C-c> "+y
    

    如果您还想在默认情况下使用剪贴板进行经典的vim拉拽/粘贴( Y / )在正常模式下,以下是一个配置选项:

    set clipboard=unnamedplus
    

    使用此配置,您可以先在正常模式下猛拉,然后用粘贴 Ctrl键 V 在插入模式下。此外,还可以粘贴来自不同VIM实例和不同应用程序的文本。

    另一个选择是:

    set clipboard=unnamed
    

    然后,您就可以通过在X环境中拖动鼠标来选择一些内容,然后将其粘贴到VIM中。但是(出于某种原因)你不能猛拉什么东西( Y 在Vim和 转移 插入 之后的某个地方,这可能是非常有限的。

    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_剪贴板 在提供的信息中 vim --version .

        6
  •  19
  •   Peter Mortensen icecrime    6 年前

    如果将VIM设置为使用系统剪贴板( :set clipboard=unnamed ,然后可以使用 换档 + 插入 . 换档 + 插入 只是操作系统范围内的粘贴键组合( Ctrl键 + 插入 是相应的“副本”)。

        7
  •  17
  •   Peter Mortensen icecrime    6 年前

    也可以使用鼠标中键以插入模式粘贴(仅限Linux)。

        8
  •  5
  •   rudolph9 AJcodez    9 年前

    你可以进入 -- INSERT (past) -- 模式通过:

    • 键盘组合: Y

    • :set paste 进入插入模式( :set nopaste 禁用

    一次 --插入(过去)-- 模式只需使用系统粘贴功能(例如 Ctrl键 换档 V 在Linux上, CMD V 在Mac OS上。

    当在ssh上使用vim时,此策略非常有用。

        9
  •  4
  •   Windows programmer    14 年前

    对。在Windows ctrl+v和Linux中,几乎同时按下两个鼠标按钮。

    在Windows中,我认为我的“vimrc”中的这一行可能会:

    source $VIMRUNTIME/mswin.vim
    

    在Linux中,我不记得我是怎么做到的。看起来我可能从默认的.vimrc文件中删除了一些行。

        10
  •  0
  •   Sheharyar    8 年前

    以插入模式粘贴

    在这种情况下,自定义映射似乎是合适的。这是我用来在插入模式下粘贴被提取的项目的方法:

    inoremap <Leader>p <ESC>pa
    

    我的 Leader 这里的关键是 \ ;这意味着打击 \p 在“插入”模式下,将粘贴先前选中的项目/行。