繁体   English   中英

键盘映射中的Vim异常

[英]Vim oddities in keymapping

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

nomap go o <esc>

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

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

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有一个有用的提示: 快速添加和删除空行 诀窍是在添加新行之前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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM