lau*_*ent 21 git vimdiff readonly difftool
我正在尝试使用vimdiff作为Git的diff工具,但由于某种原因,文件始终以只读模式打开.它对原始文件有意义,但对我修改过的文件没有意义(因为我尚未提交它们).
这是我目前的.gitconfig:
[diff]
tool = vimdiff
[merge]
tool = vimdiff
[difftool]
prompt = false
Run Code Online (Sandbox Code Playgroud)
知道是什么原因引起的吗?
buk*_*zor 18
git用于vimdiff的deafult命令是:(通过检查进程列表找到)
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"'
报价很棘手.我会复制粘贴它.
Shu*_*nya 16
这是vimdiff的默认所需行为.您可以取消设置:set noro.
发生这种情况的原因是因为 gitvimdiff
使用-R
(readonly) 选项进行调用。有几种解决方案可以写入文件:
:w!
在vim中使用。即使它以只读方式打开,这也会强制写入。
您可以编辑~/.gitconfig
以覆盖 vimdiff 命令,而无需-R
[difftool "vimdiff"]
cmd = vimdiff "$LOCAL" "$REMOTE"
Run Code Online (Sandbox Code Playgroud)您可以编辑~/.vimrc
以始终使 vimdiff 可写。(这将影响所有 vimdiff,而不仅仅是 git。)
if &diff
set noreadonly
endif
Run Code Online (Sandbox Code Playgroud)