在使用Powershell 5时,当我键入git rebase -i <sha>
vim时,我会在他们的选择行中获得提交列表。
将插入符号移至任何一行的开头并将选择内容更改为squash
,s
,fixup
,f
等似乎最初被阻止。似乎应该随机点击光标键,输入随机字符,最终vim允许按照我的意图输入文本。
vim在这里做什么,它只是一个选项? 你怎么阻止它?
[编辑]我意识到vim的初始模式可能不是我正在寻找的模式,但是我不确定如何检查,更改它或任何相关的模式。如果在键入git rebase...
时输入的vim的初始模式确实需要更改,那么这个问题的一个好答案就是如何在vim启动后更改该模式。
答案 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
Vim是一个了不起的文本编辑器,可以让你做很多事情!在交互式变基上下文中,我最喜欢的一个是文本替换:在normal mode
中,键入:%s/pick/fixup/g
以及&#34; pick&#34;的所有实例将被&#34; fixup&#34;取代。然后,您可以输入insert mode
以根据需要对第一次提交(更改为编辑,选择,重新命名等)和任何其他提交行进行微小更改。
答案 1 :(得分:6)
默认情况下vim
个会话开始等待命令(而不是插入插入符号的文本)。这是vi
实现中的典型行为。
如果使用箭头键或鼠标(而不是传统的h
,j
,k
和l
命令)放置插入符号,那么您可能会发现使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
。)