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

时间:2017-08-07 13:27:44

标签: git powershell vim rebase

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

将插入符号移至任何一行的开头并将选择内容更改为squashsfixupf等似乎最初被阻止。似乎应该随机点击光标键,输入随机字符,最终vim允许按照我的意图输入文本。

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

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

2 个答案:

答案 0 :(得分:7)

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

在Vim中,您从normal mode开始。

准备编辑

从那里,您可以按insert mode访问i,并可以按照您通常的预期编辑文字。完成文字编辑后,按esc返回normal mode

保存更改

normal mode中,输入:wq,然后按Enter以“写入”&#39;和&#39;退出&#39;来自Vim。

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

为了避免在Vim中应用您的更改,您通常会在:q!中使用normal mode(退出而不保存,强制),但这不会影响交互式变基你期待的方式。相反,您必须先删除文本中的所有行,然后才能使用:wq:q!。在normal mode中一次删除所有行的简单方法是按照从This Question

中选择的答案进行操作

我想要Squash或Fixup这么多行...

Vim是一个了不起的文本编辑器,可以让你做很多事情!在交互式变基上下文中,我最喜欢的一个是文本替换:在normal mode中,键入:%s/pick/fixup/g以及&#34; pick&#34;的所有实例将被&#34; fixup&#34;取代。然后,您可以输入insert mode以根据需要对第一次提交(更改为编辑,选择,重新命名等)和任何其他提交行进行微小更改。

答案 1 :(得分:6)

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

如果使用箭头键或鼠标(而不是传统的hjkl命令)放置插入符号,那么您可能会发现使vim以插入模式启动适合您。您可以通过多种方式完成此操作。一种方法是通过这样做来改变编辑器命令:

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

当然,您仍然必须退出&#34;插入&#34;完成后的模式,然后输入&#34;保存并退出&#34;命令。 (您可以通过点击esc键退出&#34;插入&#34;模式。)

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

(基本上,如果你花时间真正学习如何使用vi - 类型的编辑器,那么默认模式将开始变得更有意义;如果你不想投入那段时间,您可能希望不再使用vim。)