2

我喜欢在不进入插入模式的情况下插入空白行,我使用了这个键映射:

nomap go o <esc>

这确实会创建空白行,但会引入一些奇怪的行为。我有智能缩进和自动缩进设置。新行跟随缩进,但不会删除它们,即使手动这样做会自动删除多余的空格。它还会在每次光标所在的位置添加一个空格。

有人对解释这种行为有任何见解吗?

4

3 回答 3

5

Vim非常符合您编写映射命令的方式 - 它实际上是在处理映射中的空间之前处理<ESC>. 换句话说,您的映射会这样做:

nnoremap go o<SPACE><ESC>

您应该将其更改为:

nnoremap go o<ESC>

并确保映射中没有任何多余的空格!

于 2009-08-28T00:52:41.707 回答
0

我同意“太多的php”。这是我的 .vimrc 中的相关部分

nnoremap <A-o> o<ESC>k
nnoremap <A-O> O<ESC>j

我认为它更快,因为您将光标返回到原始行(尽管不在原始字符上)。

于 2009-08-28T05:58:07.693 回答
0

像往常一样,vim wiki有一个有用的提示:快速添加和删除空行。诀窍是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>
于 2009-08-28T08:04:36.270 回答