加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在vim中有效撤消自动完成

发布时间:2020-12-15 18:18:58 所属栏目:安全 来源:网络整理
导读:现在我正在使用 vim中的自动完成功能,我已经确定了 supertab来处理我的完成情况.虽然它的运行非常顺利(我认为)正如它的设计,我想知道如何改变一些东西. 首先,我在Ubuntu 12.04LTS上运行7.3.429 set completeopt=menuone,preview,longest 所以我有supertab的b
现在我正在使用 vim中的自动完成功能,我已经确定了 supertab来处理我的完成情况.虽然它的运行非常顺利(我认为)正如它的设计,我想知道如何改变一些东西.

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

set completeopt=menuone,preview,longest

所以我有supertab的bash类型自动完成,默认完成.

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

aaabbbcccddd
aaabbccddeef
aaabbcddeeff

如果我输入aa并点击Tab,那么vim意识到aaabb是匹配中最长的常用字符串,因此它会插入aaabb并显示包含三个选项的菜单.如果我确实想要其中一个选项,那么一切都很好.但也许我真的想要aaaaazzzzz,但没有意识到我还没有输入它.

是否有一个很好的方式来对vim说:“哦,我很抱歉!毕竟我并不是要完成任务!请假装我没有.”

现在,对我来说明显的选择是:

>点击Tab或Shift Tab足够的时间回到我的初始.但是如果有很多相似的词,特别是不同的长度,这很烦人.
>然后多次必要的退格,或其他一些天真的删除.但这些肯定是不必要的关键.
>点击Esc u以获得撤消,但这会撤消我的全部信息(如果我快速键入,则会更多).这是完全不可接受的.然后,我需要重新进入插入模式并重新输入.毛.
>按住Ctrl U可以撤消而不离开插入模式.但这也有过多的消除方式.
>按Ctrl W删除最后一个单词.虽然我在不退出插入模式的情况下执行此操作,但仍需要重新键入.这是迄今为止我发现的最好的.

如果我没有启用最长时间,那么我可以使用Ctrl E,退出菜单而不插入任何其他内容.但是,由于最长时间打开,它会停止自动完成,但会保留输入的最长公共匹配.

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

解决方法

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

但是我想,简单地接受最长的匹配并编辑单词并不难.您还可以使用< c-g> u将撤消块拆分为< tab>映射.虽然这可能会超过你想要的历史.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读