Soru Özellikle Kaçak için vimdiff vimdiff modundan nasıl çıkıyorsunuz?


Vim kullanıyorum kaçak uzatma. Bir vdizmi moduna getiren bir Gdiff komutu vardır, ancak vimdiff modunu kapatmak / kapatmak için doğru / hızlı yol nedir?

I.e., diyelim ki Git deposu altında FooBar.txt dosyasını düzenliyorum. Ateş ediyorum: Gdiff, değişiklikleri vimdiff'te gözden geçir ve sonra geri dönüp FooBar.txt dosyasını veya başka bir dosyayı düzenlemeye devam etmek istiyorum :)

UPDATE1: Bu hızlı kombinasyonları bir sonraki çalışma gününde deneyeceğim :)

"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: Geçerli eşlemlerim (sadece fark penceresini kapatır!)

"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

Ayrıca, lütfen aşağıdakilerin bir anwser olması gerektiğine karar vermeme yardımcı olun: https://stackoverflow.com/a/15975201/275980


51
2018-04-24 07:45


Menşei


gDOlmadan benim için çalışıyor :diffoff!<cr>. - blueyed
Sadece fark penceresine odaklanmak ve :q Kapatma, hile yapmak gibi görünüyor. Her iki pencereden yapmak için kolay bir yolu olsa güzel olurdu. - Aaron Gibralter
Görünüşe göre, tüm cevaplar Fugitive-plugin-specific değilse ve sadece kısmen daha sade bir Vim konfigürasyonu ile çalışır. - MarkHu


Cevaplar:


Sen yapabilirsin windo set nodiff noscrollbind ve sonra ikinci pencereyi kapatın.

Güncelleme: bir diffoff Komut. kullanım windo diffoffÖnceki satırda yazdıklarımı değil.


37
2018-04-24 08:24



ayrıca: diffoff! aynısını yap, tamam mı? Bu komuta vim_use grubundan Tony M. tarafından işaret edildi. - wik
Bu, açılan pencereyi kapatmayacak :Gdiff, yapar? - blueyed
Blueyed Evet, yapmaz. Kaçak kullanmıyorum, ancak diff mode ile oluşturulmuş VCSVimDiff (VCSCommand eklenti) diff olmayan mod ile değiştirilir (daha önce aktif olan) VCSVimDiff was run) if you run : ikinci tamponda bw. Bu çok uygun, ama VCSCommand eklentisinin kendi özelliğidir, kutunun dışında bir şey değil. İsterseniz, vimrc'inizde benzer işlevlere sahip bir autocommand oluşturabilirsiniz. - ZyX
@BjornTipling Ne çalışmıyor? diffoff hangi eklentinin başlatıldığına bakılmaksızın vimdiff modunu devre dışı bırakır. - ZyX
@BjornTipling, <CW> <CO> ile ilgili olarak sevmediğim şey, daha derin bir soruşturma yaptığınızda yararlı olan git durum penceresi de dahil olmak üzere tüm pencereleri kapatmasıdır, yani <a0> <a0> Git </ a0> durumunda <sd> ayrıca vurgulanan dosyada diff modunun açılması - wik


Göre: https://github.com/tpope/vim-fugitive/issues/36

Diğer pencereyi kapat. Odağı ona kaydırmadıysanız bunu yapmanın en kolay yolu <C-W><C-O>"Bu pencereyi sadece pencere yap" anlamına gelir.


34
2017-10-14 02:59



IMHO bu seçilmiş Cevap olmalı - lkraav
@lkraav: Anlaştık! - Jonas Due Vesterheden
Bu sadece kaçak için çalışıyor, değil mi? - idbrii
Gdiff'e girmeden önce birden çok pencerenin açık olması sorun yaratır - Gdiff sadece orijinali yanında bir arabellek ekler, diğerlerini kapatmadan. Üzerinde çalıştığın her şeyi tekrar açmalısın. - matthias
Git penceresinden farklı bir şey yapmazsanız, tüm pencereleri kapattığından oldukça kullanışlı değildir. - wik


Şansım yoktu diffoffama bunu yeni öğrendim :Gedit hiçbir argüman olmadan, gözden geçirdiğiniz önceki bir versiyonun tersine, dosyanın çalışma dizini sürümüne geri getireceksiniz.

Ve benzeri q (ihtiyaç yok :q) fark kenar çubuğunu kapatacak, yapabilirsin q bunu takiben :Gedit kenar çubuğundan kurtulmak ve dosyanın geçerli sürümüne geri dönmek için.


12
2018-02-18 23:03



q kayda başlayacaktır. Bu yüzden ne tür bir 'q' kullandığınızdan emin değilsiniz. Belki de bu bir gui vim olayıdır. - Bjorn Tipling
Bazı eklentiler remap q, sadece belirli bir tamponda (map <buffer> q ZZ veya arabelleği kapatmak için). Benim için, bu Fugitive git suçu "kenar çubuğunda" olur. Herhangi bir fark görüntülemede de kullanılıyorsa, artık hatırlamıyorum. - Henrik N
Varsayılan davranış :Gedit değiştirilebilir. Şimdi, çalışma ağacı dosyası yerine dizindeki corespoding dosyasını düzenleyecektir. - Bohr
Gedit ile, pencere hala bölünmüş durumda. - systemovich
@systemovich Bu cevap ilk önce şunu öneriyor :q (ya da sadece q) diff kenar çubuğunu kapatmak için. - Henrik N


Bu benim için iyi çalışıyor, mevcut fikirlerin bazılarını burada birleştiriyor:

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>

4
2018-04-04 13:12





Bunun için basit bir çözüm buldum. Buradan kontrol edebilirsiniz: https://gist.github.com/radmen/5048080

" Simple way to turn off Gdiff splitscreen
" works only when diff buffer is focused
if !exists(":Gdiffoff")
  command Gdiffoff diffoff | q | Gedit
endif

4
2018-02-27 14:00



Bunu beğendim. Ex tekrar FTW komutları. Sanırım bunu kullanacağım - sehe


Yukarıdaki çözümlerin hiçbiri benim için işe yaramadı. Bunun yerine sona erdi:

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


3
2018-03-24 09:15



Sadece şunu anladım: nnoremap g<C-q> ZZ:Gedit<CR> (görmek bugün benim kendi sorum). Sanırım biraz daha iyi çünkü pencereler arasında hareket etmekten kaçınıyor. - sehe


Bir alternatif <C-W><C-O>Eğer birden fazla pencereniz varsa, diğer fark penceresine geçersiniz ve <C-W>cSadece bir pencereyi kapatır.

Yanlış fark penceresini kapatırsanız :Gedit

Dikkatli ol ve kafa karıştırmayın <C-W>c ile <C-W><C-C>


2
2018-04-12 15:22



GD eşlemesinde yaptığım şeye benzer: nnoremap <Leader> gD <c-w> h: bd <cr> - wik
Ama teşekkürler, <c-w> h <c-w> c daha güzel görünüyor :) - wik


kullandıktan sonra vimdiff pencereleri bırakmak zorunda olduğum şey: Gdiff

nnoremap gD :q!<CR> :Gedit!<CR>

1
2017-07-05 13:17



Bunun gerçek dosyayı kapatacağına ve tüm değişikliklerinizi kaybetmenize neden olacak geçici fark dosyasını düzenlediğinize inanıyorum. Yani, imlecinizi asla farkın üzerine geçirmediyseniz. - Bjorn Tipling


noremap <leader>do :diffoff \| windo if &diff \| hide \| endif<cr>

Oldukça farklı bir mod ve diğer farklı pencereleri kapatın. (Not: Kaçak gizli arabelleklerini otomatik olarak silecektir.)


0
2018-06-20 02:02