我很乐意使用vim作为我的默认提交编辑器,并且不想更改它。然而,当涉及到rebasing时,我发现自己压缩了数十个提交,我发现使用像Textwrangler这样的交互式编辑器要容易得多(在除顶部提交之外的所有提交中将“pick”替换为“squash”)。有什么方法可以为一次性rebase命令指定备用编辑器吗?我知道在vim中我可以做::%s/pick/squash/但这有它自己的小烦恼。编辑-如评论中所述,您可以通过转到第2行并执行来非常有效地压缩除顶部提交之外的所有提交:,$s/pick/squash/(注意逗号和美元与原来的不同) 最佳答案
更新janusvim发行版后,使用vim提交消息似乎有问题。最好的例子是执行gitpull以获取其他人的更改。显示vim编辑器,我键入我的提交消息,我输入:wq但不是提交工作,我收到以下错误留言:error:Therewasaproblemwiththeeditor'vi'.Notcommittingmerge;use'gitcommit'tocompletethemerge.然后我必须手动提交:(我如何让git与vim很好地协同工作? 最佳答案 经过一番谷歌搜索后,结果证明答案是运行以下命令:gitconfig--global
更新janusvim发行版后,使用vim提交消息似乎有问题。最好的例子是执行gitpull以获取其他人的更改。显示vim编辑器,我键入我的提交消息,我输入:wq但不是提交工作,我收到以下错误留言:error:Therewasaproblemwiththeeditor'vi'.Notcommittingmerge;use'gitcommit'tocompletethemerge.然后我必须手动提交:(我如何让git与vim很好地协同工作? 最佳答案 经过一番谷歌搜索后,结果证明答案是运行以下命令:gitconfig--global
三种模式1.命令模式(commodmode) 控制光标的移动 字符、字、行的删除 移动或者复制某段区域 进入输入模式(i、a、o) 进入底行模式(shift+:)2.输入模式(insertmode) 编辑文本内容 退回到命令模式(ESC)3.底行命令模式(Lastlinemode)输入相关指令(文件替换、字符串查找、列出行号等)注:大部分指令,全部都是在命令模式下进行的(不是底行模式,也不是插入模式)进入插入模式按[a]==>进入插入模式,从目前光标所在的位置的下一个位置开始输入文字。按[i]==>进入插入模式,从光标当前位置开始输入按[o]==>进入插入模式,从下
开源项目Trac有一个出色的差异荧光笔—它突出显示更改的行和每个更改的行中更改的字节!参见here或here例如。有没有办法在bash终端、git或vim中使用相同的颜色突出显示(即更改行和更改字节)差异输出(补丁文件)? 最佳答案 diff-highlightPerlcontribscript生成的输出与Trac屏幕截图的输出非常相似,很可能Trac正在使用它:安装:wgethttps://raw.githubusercontent.com/git/git/fd99e2bda0ca6a361ef03c04d6d7fdc7a9c40
开源项目Trac有一个出色的差异荧光笔—它突出显示更改的行和每个更改的行中更改的字节!参见here或here例如。有没有办法在bash终端、git或vim中使用相同的颜色突出显示(即更改行和更改字节)差异输出(补丁文件)? 最佳答案 diff-highlightPerlcontribscript生成的输出与Trac屏幕截图的输出非常相似,很可能Trac正在使用它:安装:wgethttps://raw.githubusercontent.com/git/git/fd99e2bda0ca6a361ef03c04d6d7fdc7a9c40
从磁盘上的版本刷新文件的命令是:e!如何对缓冲区中的所有文件执行相同的操作?背景:我需要它,因为我正在使用带有多个分支的git,并打开一个包含缓冲区的vim。当我checkout一个分支时,我想要刷新vim。 最佳答案 :checkt[ime]命令就是为此目的而设计的。它将提示您重新加载任何已更改的缓冲区;如果你想跳过提示,你可以做:setautoread事先(你仍然会得到一个关于缓冲区的提示,其中有本地未保存的更改)。也避免了StevenLu在acceptedanswer中提到的语法高亮问题;:bufdoturnsoffsynta
从磁盘上的版本刷新文件的命令是:e!如何对缓冲区中的所有文件执行相同的操作?背景:我需要它,因为我正在使用带有多个分支的git,并打开一个包含缓冲区的vim。当我checkout一个分支时,我想要刷新vim。 最佳答案 :checkt[ime]命令就是为此目的而设计的。它将提示您重新加载任何已更改的缓冲区;如果你想跳过提示,你可以做:setautoread事先(你仍然会得到一个关于缓冲区的提示,其中有本地未保存的更改)。也避免了StevenLu在acceptedanswer中提到的语法高亮问题;:bufdoturnsoffsynta
当我进行交互式rebase时,例如gitrebase-iHEAD~3rebase交互式编辑器(在我的例子中是vim)打开让我编辑要rebase的提交pickc843ea2SetVimcolumnlimitto80(OSX)pickfc32eacAddBashaliasfor`pbcopy`(OSX)....如果我现在决定要中止rebase并使用:q退出vim,rebase无论如何都会开始。我在Windows上使用git版本1.9.0.msysgit.0。当然,我可以只删除所有pick行,但如果我重新设置更长的历史记录,可能需要做很多事情。还有别的办法吗?如何退出rebase交互式编辑器
当我进行交互式rebase时,例如gitrebase-iHEAD~3rebase交互式编辑器(在我的例子中是vim)打开让我编辑要rebase的提交pickc843ea2SetVimcolumnlimitto80(OSX)pickfc32eacAddBashaliasfor`pbcopy`(OSX)....如果我现在决定要中止rebase并使用:q退出vim,rebase无论如何都会开始。我在Windows上使用git版本1.9.0.msysgit.0。当然,我可以只删除所有pick行,但如果我重新设置更长的历史记录,可能需要做很多事情。还有别的办法吗?如何退出rebase交互式编辑器