【发布时间】:2009-08-27 21:13:43
【问题描述】:
我喜欢在不进入插入模式的情况下插入空行,我使用了这个键映射:
nomap go o <esc>
这确实会创建空白行,但会引入一些奇怪的行为。我有智能缩进和自动缩进设置。新行跟随缩进,但不会删除它们,即使手动这样做会自动删除多余的空格。它还会在每次光标所在的位置添加一个空格。
任何人有任何见解来解释这种行为?
【问题讨论】:
标签: vim keymapping
我喜欢在不进入插入模式的情况下插入空行,我使用了这个键映射:
nomap go o <esc>
这确实会创建空白行,但会引入一些奇怪的行为。我有智能缩进和自动缩进设置。新行跟随缩进,但不会删除它们,即使手动这样做会自动删除多余的空格。它还会在每次光标所在的位置添加一个空格。
任何人有任何见解来解释这种行为?
【问题讨论】:
标签: vim keymapping
Vim 是 非常 字面意思的,你如何编写映射命令 - 它实际上是在处理 <ESC> 之前处理映射中的空间。换句话说,您的映射会这样做:
nnoremap go o<SPACE><ESC>
你应该把它改成:
nnoremap go o<ESC>
并确保映射中没有多余的空格!
【讨论】:
我同意“太多的 php”。 这是我的 .vimrc 中的相关部分
nnoremap <A-o> o<ESC>k
nnoremap <A-O> O<ESC>j
我认为它更快,因为您将光标返回到原始行(尽管不在原始字符上)。
【讨论】:
像往常一样,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>
【讨论】: