我想插入空白行而不进入插入模式,我使用了这个键映射:
nomap go o <esc>
这确实会创建空白行,但会引入一些奇怪的行为。我有聪明的缩进和自动设置。新行遵循缩进但不删除它们,即使这样做会手动自动删除冗余空格。它还添加了每个光标所在的单个空格。
任何人都有任何见解来解释这种行为吗?
答案 0 :(得分:5)
Vim 非常字面用你编写映射命令的方式 - 它实际上是在处理 <ESC>
之前映射中的空间。换句话说,您的映射执行此操作:
nnoremap go o<SPACE><ESC>
您应将其更改为:
nnoremap go o<ESC>
并确保映射中没有任何额外的空格!
答案 1 :(得分:0)
我同意“太多的PHP”。 这是我的.vimrc
的相关部分nnoremap <A-o> o<ESC>k
nnoremap <A-O> O<ESC>j
我认为自从你将光标放回原始行后它会更快(虽然不在原始字符上)。
答案 2 :(得分:0)
像往常一样,vim wiki有一个有用的提示:Quickly adding and deleting empty lines。诀窍是在添加新行之前set paste
,然后是set nopaste
。此外,这将设置一个标记来记住光标位置并跳回到原来的位置。
nnoremap go :set paste<CR>m`o<Esc>``:set nopaste<CR>
nnoremap gO :set paste<CR>m`O<Esc>``:set nopaste<CR>