gpt4 book ai didi

vim - 如何有效地撤消vim中的自动完成

转载 作者:行者123 更新时间:2023-12-04 15:23:36 25 4
gpt4 key购买 nike

现在我正在使用 vim 中的自动补全功能,我选择了 supertab处理我的完成。虽然它运行得非常顺利并且(我认为)完全按照它的设计,但我想知道如何改变一些东西。

首先,我在 Ubuntu 12.04LTS 上运行 7.3.429

set completeopt=menuone,preview,longest

这样我就可以使用 supertab 进行 bash 类型的自动完成,并且默认完成。

假设我的文件中有以下内容:
aaabbbcccddd
aaabbccddeef
aaabbcddeeff

如果我输入 aa并按 Tab,然后 vim 意识到 aaabb是匹配中最长的公共(public)字符串,因此它插入 aaabb并显示一个包含三个选项的菜单。如果我真的想要这些选项之一,那么一切都很好。但也许我真的想要 aaaaazzzzz ,但没有意识到我还没有输入它。

有没有一个好方法可以对 vim 说:“哦,对不起!我不是故意要完成制表符的!请假装我没有。”

现在,对我来说显而易见的选择是:
  • 多次按 Tab 或 Shift+Tab 以回到我的初始状态。但是如果有很多相似的词,尤其是长度不同的词,那就很烦人了。
  • 不管需要多少次都按退格键,或者其他一些天真的删除。但这些肯定是不必要的击键。
  • 按 Esc+u 进行撤消,但这会撤消我的整个单词(如果我快速键入,会撤消更多)。这是完全不能接受的。之后,我需要重新进入插入模式并重新输入。总的。
  • 在不离开插入模式的情况下按 Ctrl+U 撤消。但这也有去除太多的趋势。
  • 按 Ctrl+W 删除最后一个单词。虽然我可以在不退出插入模式的情况下执行此操作,但我仍然需要重新输入。这是迄今为止我发现的最好的。

  • 如果我没有 longest启用,然后我可以使用 Ctrl+E,退出菜单而不插入任何其他内容。但由于最长是打开的,它会停止自动完成,但会留下最长的常见匹配项。

    当然,必须有更好的方法来做到这一点。

    最佳答案

    在 vim 中有两种本地方法可以做到这一点。如果您知道该项目不在完成菜单中的正确方法,您可以使用 <c-y> . <c-y>接受当前匹配项,如果您没有移动,则任何完成都会将您发送回您插入的文本。 (第二种方式)但是,如果您确实通过了完成菜单,您可以继续移动,直到您返回原始文本。

    但是我想简单地接受最长的匹配并编辑单词并不难。您也可以使用 <c-g>u通过将其放入您的 <tab> 中来分解撤消 block 映射。尽管这可能会比您想要的更多地破坏历史。

    关于vim - 如何有效地撤消vim中的自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17986800/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com