你如何在vim中退出vimdiff模式,特别是对于Fugitive?

wik*_*wik 59 vim vimdiff vim-fugitive

我正在使用带有逃逸扩展的 vim .它有一个:Gdiff命令,它带你进入vimdiff模式,但关闭/退出vimdiff模式的正确/快速方法是什么?

即,假设我正在编辑Git存储库下的文件FooBar.txt.我启动:Gdiff,检查我在vimdiff中的更改,然后我想回来继续编辑FooBar.txt或任何其他文件:)

更新1:我将在下一个工作日试试这些快速组合:)

"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>
Run Code Online (Sandbox Code Playgroud)

UPDATE2:我当前的映射(仅关闭diff窗口!)

"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
Run Code Online (Sandbox Code Playgroud)

此外,请帮助我决定以下是否应该是anwser:https://stackoverflow.com/a/15975201/275980

ZyX*_*ZyX 45

您可以执行windo set nodiff noscrollbind然后关闭第二个窗口.

更新:有一个diffoff命令.使用windo diffoff,而不是我在前一行中写的.

  • 另外:diffoff!做同样的事,对吧?我被vim_use组的Tony M.指向了这个命令. (7认同)
  • 这不会关闭由`:Gdiff`打开的窗口,是吗? (5认同)
  • @BjornTipling我个人不喜欢的<CW> <CO>是它关闭所有窗口,包括git状态窗口,这对你进行更深入的调查很有用,即在git状态窗口中有<SD> map还在突出显示的文件上打开diff模式 (3认同)

jtr*_*ley 38

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

关闭另一个窗口.如果你没有将焦点移到它上面<C-W><C-O>,这是最简单的方法,这意味着"将此窗口设为唯一窗口".

  • 如果你在进入Gdiff之前打开了多个窗口,这会导致问题--Gdiff只在原始窗口旁边添加一个缓冲区,而不关闭任何其他窗口.你必须重新打开你正在做的其他事情. (9认同)
  • 恕我直言,这应该是选择的答案 (3认同)
  • 当你从git状态窗口做差异时,它不是很有用,因为它关闭所有窗口... (3认同)

Hen*_*k N 13

我没有运气diffoff,但我刚刚了解到,:Gedit没有任何争论会让你回到文件的工作目录版本,而不是你正在审查的早期版本.

并且因为q(不需要:q)将关闭差异侧边栏,您可以执行q后面的操作:Gedit来删除侧边栏,然后返回到当前版本的文件.

  • q将开始录制.所以不确定你正在使用什么样的'q'.也许这是一个gui vim的东西. (4认同)