在 git rebase 期间输入 VIM 时如何开始输入?

How to start typing when entering VIM during git rebase?

在使用 Powershell 5 时,当我键入 git rebase -i <sha> 时,vim 会启动,我会在他们的选择行上获得提交列表。

将插入符号移动到任何这些行的开头并将选择更改为 squashsfixupf 等最初似乎被阻止。看起来应该随机点击光标键,输入随机字符,最终 vim 让文本按照我的意图输入。

vim 在这里做什么,它只是一个选项吗? 你怎么阻止它?

[编辑] 我意识到 vim 的初始模式可能不是我正在寻找的模式,但是我不确定如何检查、更改它或任何相关的内容。如果输入 git rebase... 时输入的 vim 的初始模式确实需要更改,那么这个问题的一个很好的答案是如何在 vim 启动后更改该模式。

我已经了解了您所描述的内容,这真的很令人困惑!我希望这会有所帮助,但如果有任何不清楚的地方,请通过评论回复,我很乐意回复或更新我的答案:)

在 Vim,你从 normal mode 开始。

准备编辑

从那里,您可以通过按 i 访问 insert mode 并可以像您通常期望的那样编辑文本。完成文本编辑后,按 esc 到 return 到 normal mode

保存更改

normal mode 中,输入 :wq 并按 Enter 到 'Write' 和 'Quit' 出 Vim。

可怕的错误!需要退出而不做任何更改!

为了避免在 Vim 中应用您的更改,您通常会在 normal mode 中使用 :q!(退出而不保存,强制),但这不适用于交互式变基以你期望的方式。相反,您必须在使用 :wq:q! 之前删除文本中的所有行。一次删除 normal mode 中所有行的简单方法是遵循从 This Question

中选择的答案

我想压缩或修复这么多行...

Vim 是一个了不起的文本编辑器,可以让你做很多事情!在交互式变基的上下文中,我最喜欢的一个是文本替换:在 normal mode 中,键入 :%s/pick/fixup/g 并且 "pick" 的所有实例都将替换为 "fixup"。然后,您可以输入 insert mode 对第一个提交(更改为编辑、选择、改写等)和任何其他需要的提交行进行细微更改。

默认情况下 vim 会话开始等待命令(而不是要在插入符号处插入的文本)。这是 vi 实施中的典型行为。

如果您使用箭头键或鼠标定位插入符号(与传统的 hjkl 命令相反),那么您可能会发现让 vim 以插入模式启动对你有用。您可以通过多种方式执行此操作。一种方法是更改​​编辑器命令,方法是:

git config --global core.editor 'vi +star'

当然,完成后您仍然需要退出 "insert" 模式,然后才能输入 "save and exit" 命令。 (按 esc 键退出 "insert" 模式。)

就是说,您可能会发现让 vim 以默认模式启动更方便,因为这样您就可以执行以下操作:将插入符号放在您想要的 pick 上改变;输入 c w("change word" 命令);输入 squash(或任何您想将 pick 更改为的内容);按 esc 键退出插入模式。点击 ZZ 保存并关闭 vim。

(基本上,如果您花时间真正学习如何使用 vi 类型的编辑器,那么默认模式将开始变得更有意义;如果您不想花时间, 你可能只想切换到不使用 vim.)