【问题标题】:Vim oddities in keymapping键盘映射中的 Vim 奇怪之处
【发布时间】:2009-08-27 21:13:43
【问题描述】:

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

nomap go o <esc>

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

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

【问题讨论】:

    标签: vim keymapping


    【解决方案1】:

    Vim 是 非常 字面意思的,你如何编写映射命令 - 它实际上是在处理 &lt;ESC&gt; 之前处理映射中的空间。换句话说,您的映射会这样做:

    nnoremap go o<SPACE><ESC>
    

    你应该把它改成:

    nnoremap go o<ESC>
    

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

    【讨论】:

    • 天啊!我看错了问题!我认为它只是一个键映射列表,而不是文字用户输入。非常感谢!
    【解决方案2】:

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

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

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

    【讨论】:

    • 然后试试这个:'nnoremap mto`t'
    【解决方案3】:

    像往常一样,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>
    

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多