在 git rebase 期间输入 VIM 时如何开始输入?
How to start typing when entering VIM during git rebase?
在使用 Powershell 5 时,当我键入 git rebase -i <sha>
时,vim 会启动,我会在他们的选择行上获得提交列表。
将插入符号移动到任何这些行的开头并将选择更改为 squash
、s
、fixup
、f
等最初似乎被阻止。看起来应该随机点击光标键,输入随机字符,最终 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
实施中的典型行为。
如果您使用箭头键或鼠标定位插入符号(与传统的 h
、j
、k
和 l
命令相反),那么您可能会发现让 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
.)
在使用 Powershell 5 时,当我键入 git rebase -i <sha>
时,vim 会启动,我会在他们的选择行上获得提交列表。
将插入符号移动到任何这些行的开头并将选择更改为 squash
、s
、fixup
、f
等最初似乎被阻止。看起来应该随机点击光标键,输入随机字符,最终 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
实施中的典型行为。
如果您使用箭头键或鼠标定位插入符号(与传统的 h
、j
、k
和 l
命令相反),那么您可能会发现让 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
.)