我正在尝试使用 vimdiff 作为 Git 的差异工具,但由于某种原因,这些文件始终以只读模式打开。这对原始文件有意义,但对我修改过的文件没有意义(因为我还没有提交它们)。
这是我当前的 .gitconfig:
[diff]
tool = vimdiff
[merge]
tool = vimdiff
[difftool]
prompt = false
知道是什么原因造成的吗?
git 用于 vimdiff 的默认命令是:(通过检查进程列表找到)
vim -R -f -d -c "wincmd l" -c 'cd "$GIT_PREFIX"' "$LOCAL" "$REMOTE"
您可以通过设置变量来覆盖它(不使用-R
只读模式) 。difftool.vimdiff.cmd
$ git config --global difftool.vimdiff.cmd 'vim -f -d -c "wincmd l" -c '\''cd "$GIT_PREFIX"'\'' "$LOCAL" "$REMOTE"'
引用很棘手。我会复制粘贴它。
这是 vimdiff 的默认行为。您可以使用取消设置:set noro
。
或者在你的 .vimrc 配置中,添加这个:
" Default to not read-only in vimdiff
set noro
发生这种情况的原因是 gitvimdiff
使用-R
(readonly) 选项调用。有几种解决方案可以写入文件:
:w!
在 vim 中使用。即使它以只读方式打开,这也会强制写入。
您可以编辑~/.gitconfig
以覆盖 vimdiff 命令,而无需-R
[difftool "vimdiff"]
cmd = vimdiff "$LOCAL" "$REMOTE"
您可以编辑~/.vimrc
以始终使 vimdiff 可写。(这将影响所有 vimdiff,而不仅仅是 git。)
if &diff
set noreadonly
endif