VIM:插入新行然后按Escape将光标移动到行首

时间:2014-07-15 18:46:27

标签: vim vi

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

以下是我的相关.vimrc设置:

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

5 个答案:

答案 0 :(得分:4)

如果您的目标是在使用oO启动新内容后粘贴新内容,则无需进入正常模式。

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

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

答案 1 :(得分:1)

如果您在按 Esc 之前编辑该行(例如,通过按 Space Backspace ),则Vim将保留缩进。

答案 2 :(得分:1)

从正常模式开始,快速==会将线条缩进到使用缩进设置时的任何位置。至少,这就是它对我有用的方式。我的vimrc中的相关缩进部分:

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

答案 3 :(得分:1)

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

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

^H 必须 ctrl + v ctrl + h 。 所以不要复制。

答案 4 :(得分:1)

如果你已经按下 Esc 或稍后回到该行,则很容易将缩进恢复为编辑或粘贴。

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

注意如果您在不输入任何文本的情况下停止编辑该行,Vim将再次删除缩进。这是故意的,因为它可以防止浪费的尾随空白乱丢文件。