【发布时间】:2014-07-15 18:46:26
【问题描述】:
当我编辑 python 文件时,插入新行然后按<ESC>,光标一直移动到行首(即第 0 列)。我该如何阻止这种行为?当我想在新行上粘贴一些东西时,真的很烦人。
这是我的相关 .vimrc 设置:
set softtabstop=2
set expandtab
set shiftwidth=2
set smartindent
【问题讨论】:
当我编辑 python 文件时,插入新行然后按<ESC>,光标一直移动到行首(即第 0 列)。我该如何阻止这种行为?当我想在新行上粘贴一些东西时,真的很烦人。
这是我的相关 .vimrc 设置:
set softtabstop=2
set expandtab
set shiftwidth=2
set smartindent
【问题讨论】:
如果您的目标是在使用o 或O 启动后将某些内容粘贴到新行,则您不必进入正常模式。
只需键入Control-R " 即可直接从插入模式从默认寄存器粘贴。
更一般地说,您可以键入 Control-R <RegisterName> 以从插入模式从该寄存器粘贴。
【讨论】:
Control-R + 从系统剪贴板粘贴过去。
如果在按 Esc 之前编辑行(例如,通过按 SpaceBackspace),那么 Vim 将保持缩进不变。
【讨论】:
在正常模式下,快速== 将使用您的缩进设置将行缩进到它应该在的任何位置。至少,这对我来说是这样的。我的 vimrc 中的相关缩进部分:
if has("autocmd")
filetype plugin indent on
endif
【讨论】:
您可以添加映射,以便在触发自动缩进时插入单个字符然后删除:
:nnoremap o ox^H
:nnoremap O Ox^H
:inoremap <enter> <enter>x^H
^H 必须通过按 ctrl+vctrl+h 引入。
所以不要复制粘贴。
【讨论】:
如果您已经按了 Esc 或稍后返回该行,则很容易恢复缩进以进行编辑或粘贴。
只需使用 cc 编辑行,重新应用自动缩进并让您进入插入模式。然后您可以开始键入或使用 CTRL+R+ 例如从当前光标位置从系统剪贴板粘贴。
注意如果你停止编辑行而不输入任何文本,Vim 将再次删除缩进。这是故意的,因为它可以防止浪费的尾随空格乱扔文件。
【讨论】: