tool git readonly vimdiff difftool

git merge tool windows



¿Cómo evitar que git vimdiff abra archivos como solo lectura? (3)

El comando deafult que usa git para vimdiff es: (encontrado al inspeccionar la lista de procesos)

vim -R -f -d -c "wincmd l" -c ''cd "$GIT_PREFIX"'' "$LOCAL" "$REMOTE"

Puede anular esto (para no usar -R , modo de solo lectura) configurando la variable difftool.vimdiff.cmd .

git config --global difftool.vimdiff.cmd ''vim -f -d -c "wincmd l" -c ''/'''cd "$GIT_PREFIX"''/''' "$LOCAL" "$REMOTE"''

La cita es complicada. Yo lo copiaría y lo pegaría.

Estoy intentando usar vimdiff como una herramienta de diferencias para Git pero, por alguna razón, los archivos siempre están abiertos en modo de solo lectura. Tiene sentido para el archivo original pero no para los que he modificado (ya que todavía no los he confirmado).

Este es mi actual .gitconfig:

[diff] tool = vimdiff [merge] tool = vimdiff [difftool] prompt = false

¿Alguna idea de qué podría estar causando esto?


Ese es el comportamiento por defecto deseado para vimdiff. Puedes desarmarlo usando :set noro .

O en su configuración .vimrc, agregue esto:

" Default to not read-only in vimdiff set noro


La razón por la que esto sucede es porque git invoca vimdiff con la opción -R (solo lectura). Hay varias soluciones para poder escribir en el archivo:

  1. Uso :w! en vim. Eso obligará a escribir aunque se haya abierto como de solo lectura.

  2. Puede editar ~/.gitconfig para anular el comando vimdiff sin -R

    [difftool "vimdiff"] cmd = vimdiff "$LOCAL" "$REMOTE"

  3. Puede editar ~/.vimrc para que siempre se pueda escribir en vimdiff. (Esto afectará a todo vimdiff, no solo a git).

    if &diff set noreadonly endif