【问题标题】:VIM: Inserting New Line then Pressing Escape Moves Cursor to Beginning of LineVIM:插入新行然后按 Escape 将光标移动到行首
【发布时间】:2014-07-15 18:46:26
【问题描述】:

当我编辑 python 文件时,插入新行然后按<ESC>,光标一直移动到行首(即第 0 列)。我该如何阻止这种行为?当我想在新行上粘贴一些东西时,真的很烦人。

这是我的相关 .vimrc 设置:

set softtabstop=2
set expandtab
set shiftwidth=2
set smartindent

【问题讨论】:

标签: vim vi


【解决方案1】:

如果您的目标是在使用oO 启动后将某些内容粘贴到新行,则您不必进入正常模式。

只需键入Control-R " 即可直接从插入模式从默认寄存器粘贴。

更一般地说,您可以键入 Control-R <RegisterName> 以从插入模式从该寄存器粘贴。

【讨论】:

  • 特殊情况:如果你从 OUTSIDE OF VIM 复制了一些东西,你可以使用Control-R + 从系统剪贴板粘贴过去。
【解决方案2】:

如果在按 Esc 之前编辑行(例如,通过按 SpaceBackspace),那么 Vim 将保持缩进不变。

【讨论】:

    【解决方案3】:

    在正常模式下,快速== 将使用您的缩进设置将行缩进到它应该在的任何位置。至少,这对我来说是这样的。我的 vimrc 中的相关缩进部分:

    if has("autocmd")
      filetype plugin indent on
    endif
    

    【讨论】:

      【解决方案4】:

      您可以添加映射,以便在触发自动缩进时插入单个字符然后删除:

      :nnoremap o ox^H
      :nnoremap O Ox^H
      :inoremap <enter> <enter>x^H
      

      ^H 必须通过按 ctrl+vctrl+h 引入。 所以不要复制粘贴。

      【讨论】:

      • 我自己会使用 而不是 ^H。更清晰,无需特殊说明即可进入。
      【解决方案5】:

      如果您已经按了 Esc 或稍后返回该行,则很容易恢复缩进以进行编辑或粘贴。

      只需使用 cc 编辑行,重新应用自动缩进并让您进入插入模式。然后您可以开始键入或使用 CTRL+R+ 例如从当前光标位置从系统剪贴板粘贴。

      注意如果你停止编辑行而不输入任何文本,Vim 将再次删除缩进。这是故意的,因为它可以防止浪费的尾随空格乱扔文件。

      【讨论】:

        猜你喜欢
        • 2014-02-22
        • 1970-01-01
        • 2022-10-11
        • 2011-06-30
        • 1970-01-01
        • 2018-09-21
        • 2018-08-05
        • 2021-11-21
        • 2016-10-09
        相关资源
        最近更新 更多