我希望看到完整的编辑位置列表,而不仅仅是'.
之类的最后一个
跳跃(<c-o>
&amp; <c-i>
)不是,因为您可以编辑几次而不会跳转。
是否可以实现这样的插件或插件?
修改
在空白行some text<esc>
中输入,然后在0i1<esc>
后$a2<esc>
进行o<esc>
。我希望有一个密钥首先返回2
然后1
。 g;
/ g,
不这样做,他们将这两个编辑视为单一编辑。
解
似乎这有效
set fo=
au InsertEnter * set tw=1
au InsertLeave * set tw=78
之后,您可以使用g;
/ g,
答案 0 :(得分:4)
基本上,您希望内置g;
/ g,
命令的功能不带 :help
所述的特殊处理:
当两个可撤消的更改位于同一行且列位置较少时 比'textwidth'分开只记住最后一个。这避免了 一行中的小变化序列,例如“xxxxx”,增加了许多位置 到更改列表。当'textwidth'为零时,使用'wrapmargin'。当那个 也没有设置固定数量为79的使用。细节:用于计算 使用字节而不是字符,以避免速度惩罚(这只是重要的 用于多字节编码)。
不幸的是,您只有两个选择:
:autocmd InsertLeave
,但从其他模式捕获更改将更难),并提供跳转到它们的映射。答案 1 :(得分:1)
修改:试试http://lifehacker.com/202093/go-back-in-text-file-time-with-vim-70 它可能就是你要找的东西
您可以尝试:
:ju
(显示所有“跳转”,即您进入文件的位置。但并不总是您编辑的位置)
如果你想直接跳到“位置n-3”:3 <c-o>
会这样做
另一种方式:g ;
返回g ,
继续前进
另一种方式:你可以“标记”位置,稍后再引用它们
ma
标记当前位置并将其标记为“a”
mb
标记另一个位置,并将其标记为“b”
然后
'a
返回到位置a,'b
转到位置b。
它也适用于命令:
:.,'as/^/# /
:在当前行(。)到标记a为('a)的行前面添加“#”
(等)
另一种方法:快速跳转到当前结束的相同单词(从函数定义跳转到函数用法很有用:*
(直到达到你想要的那个)
答案 2 :(得分:0)
我认为你想要的是g-
。另见:help :undolist
。有关详细信息,请阅读
:help undo-tree
:help usr_32.txt
编辑:正如评论所指出的,这不是问题所要求的。正如@Olivier Dulac所提到的那样,我真的在考虑g;
和g,
。