69 votes

Comment quittez-vous le mode vimdiff dans vim, en particulier pour Fugitive?

J'utilise vim avec le fugitif extension. Il a un :Gdiff de commande qui vous met en vimdiff mode, mais qu'est-ce que le droit/moyen rapide pour fermer/quitter vimdiff mode?

I. e., disons que je suis de modifier le fichier FooBar.txt en vertu de dépôt Git. J'ai le feu jusqu'à :Gdiff, revue de mes modifications dans vimdiff, et puis je veux revenir et continuer à éditer FooBar.txt ou n'importe quel autre fichier :)

UPDATE1: je vais donner à ces quick combos essayer à la prochaine journée de travail :)

"vimdiff current vs git head (fugitive extension)
nnoremap <Leader>gd :Gdiff<cr> 
"switch back to current file and closes fugitive buffer
nnoremap <Leader>gD :diffoff!<cr><c-w>h:bd<cr>

UPDATE2: Mon mappages (ferme diff fenêtre seulement!)

"vimdiff current vs git head (fugitive extension)
nnoremap <Leader>gd :Gdiff<cr> 
"switch back to current file and closes fugitive buffer
nnoremap <Leader>gD <c-w>h<c-w>c

Aussi, s'il vous plaît aidez-moi à décider si les conditions suivantes doivent être une réponse: http://stackoverflow.com/a/15975201/275980

61voto

ZyX Points 26516

Vous pouvez exécuter windo set nodiff noscrollbind puis fermer la deuxième fenêtre.

Mise à jour: il existe une commande diffoff . Utilisez windo diffoff , pas ce que j'ai écrit à la ligne précédente.

42voto

jtriley Points 425

Selon: https://github.com/tpope/vim-fugitive/issues/36

Fermez l'autre fenêtre. Le moyen le plus simple de le faire si vous n’y avez pas déplacé le focus est <C-W><C-O> , ce qui signifie "faites de cette fenêtre la fenêtre unique".

13voto

Henrik N Points 4447

Je n'ai pas eu de chance avec diffoff , mais je viens d'apprendre que :Gedit sans argument vous ramènera à la version du répertoire de travail du fichier, par opposition à une version antérieure que vous étiez. révision.

Et comme q (nul besoin de :q ) ferme la barre latérale diff, vous pouvez le faire q suivi de :Gedit pour vous en débarrasser la barre latérale, puis revenez à la version actuelle du fichier.

4voto

Jens Norrgrann Points 31

Aucune des solutions ci-dessus n'a fonctionné pour moi. J'ai fini par faire ceci à la place:

nnoremap <Leader>D :Gedit<CR><C-w>h :q<CR><C-w>k

4voto

blueyed Points 7719

Cela fonctionne bien pour moi, combinant certaines des idées existantes ici:

 function! MyCloseDiff()
  if (&diff == 0 || getbufvar('#', '&diff') == 0)
        \ && (bufname('%') !~ '^fugitive:' && bufname('#') !~ '^fugitive:')
    echom "Not in diff view."
    return
  endif

  " close current buffer if alternate is not fugitive but current one is
  if bufname('#') !~ '^fugitive:' && bufname('%') =~ '^fugitive:'
    if bufwinnr("#") == -1
      b #
      bd #
    else
      bd
    endif
  else
    bd #
  endif
endfunction
nnoremap <Leader>gD :call MyCloseDiff()<cr>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X