gpt4 book ai didi

Vim 改变列表行为

转载 作者:行者123 更新时间:2023-12-05 05:26:19 24 4
gpt4 key购买 nike

我试图在 vim 上查看更改列表,但我无法理解以下行为:

例如,我插入以下文本:

I like chips and fish.

意识到我的名词顺序错误,所以我想得到:

I like fish and chips.

从一个没有 .vimrc 的新 vim 实例开始(vim -u NONE)这正是我所做的(# 只是为了解释):

iI like chips and fish.<Esc>  # Insert text. Realize I want to switch the words
Fc # Jump back to 'chips'
de # Delete the word (and put it in anon register)
ff # Jump to the 'fish' word
vep # Select the word, and paste from anon register
g; # Try to jump back to the position where I change
# the word 'chips'. It doesn't work and I get:
E19: Mark has invalid line number

# To see what is going on i print the change list:
:changes
change line col text
2 1 12 I like and chips.
1 2 12 -invalid-
>

我的第一个问题是,为什么跳跃一开始就不起作用?

其次,更改列表的 -invalid- 条目对我来说没有任何意义。如您所见,我从未超出第 1 行。为什么第 2 行是一个条目?

我正在使用 Vim 7.4.52

更新:-invalid- 似乎是一个错误。我已经举报了:

https://code.google.com/p/vim/issues/detail?id=283

最佳答案

Mac OS X 上的默认 Vim(7.3 普通版,无 GUI,无补丁),g;将光标移动到 cchips:changes 的输出和你的不一样:

change line  col text
> 0 1 16 I like fish and chops.

只有一个 更改被记住的事实与:help g; 中的这一段一致。

When two undo-able changes are in the same line and at a column position less
than 'textwidth' apart only the last one is remembered. This avoids that a
sequence of small changes in a line, for example "xxxxx", adds many positions
to the change list. When 'textwidth' is zero 'wrapmargin' is used. When that
also isn't set a fixed number of 79 is used. Detail: For the computations
bytes are used, not characters, to avoid a speed penalty (this only matters
for multi-byte encodings).

所以一切正常(如果有点意外的话)。

使用相当新的 MacVim (7.4.258),我得到了你为 g; 描述的行为和一个稍微不同的:changes输出(你的“鱼”不见了):

change line  col text
1 1 16 I like fish and chips.
> 0 2 16 -invalid-

它闻起来很多就像你发现了一个错误,我强烈建议你通知 the vim_dev mailing list关于它(如果他们还不知道的话)。

关于Vim 改变列表行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26927016/

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