Vim'de 'gf' den nasıl dönersiniz


187

Unix modunda yüklü pencereler için Vim kullanıyorum. Bu site sayesinde gfimlecin altındaki bir dosyaya gitmek için komutu kullanıyorum .

Ben de bir komut arıyorum:

  1. önceki dosyaya dönme ( ctags için Ctrl+ ' Tya benzer ) veya
  2. gf yeni dosyayı otomatik olarak yeni bir pencerede başlatmak için yeniden eşleme yapın.

Yanıtlar:


294

Kullanıyorum Ctrl-O


43
CTRL-O atlama listesinde daha eski bir konuma gitmek için <Tab> veya CTRL-I daha yeni bir konuma gitmek için.
Sébastien RoccaSerra

4
@ g33kz0r anımsatıcı O = OUT olur, I = IN => Ctrl - O seni ortaya çıkarır, Ctrl seni getirir. Eğer her zıplama bir kapıdan geçmek istiyorsa, yani.
kronn

CTRL-O son ziyaret edilen konuma atlayacak, bu yeni dosya arandığında sinir bozucu. Shift-Ctrl-6'yı tercih ediyorum (benim durumumda Ctrl-6 çalışmıyor)
Adriano

71

Sık sık kullanmak Ctrl- 6bunun için.

Bu kullanışlı çünkü iki dosya arasında hızlıca ileri ve geri atlamamı sağlıyor.


47

CTRL-W gfDosyayı yeni bir sekmede açmak için kullanmak isteyebilirsiniz .

Yeni açılan dosyayı her zamanki gibi kapatabilir :bdveya CTRL-6arabellekleri değiştirmenin diğer normal yollarını kullanabilirsiniz .


7
sekmesi benim için arabelleğe göre daha uygundur ve nnoremap gf <C-W>gfyeni bir sekmede açmak için kullanmak daha iyi olabilir.
Searene

13

Bir dosyaya inmek için gf kullanın ve geri almak için: bf kullanın


1
Bir sekmede açık iki pencere vardı ve bu sadece önceki arabelleğe atlamak yerine ilk ikinci pencereyi açtı.
Kenny Evitt

12

Sadece sonrakini (en son) düzenlemek için kullanılan - :e#ardından kullanın Enter.


9

Ctrl-ÜstKrktr-6 birdir.

:e#↲ başka.


8
Vardiya gerekli değildir. Parmaklarınızı kötüye kullanmayı bırakın.
Zathrus

6
Um. Ben biraz eski bir zamanlayıcıyım. Ctrl-6, yıllar önce işte olduğum Wyse terminalinde vi ile çalışmazdı. Bazı şeyler kazınmış kalır. Ve bu komboda Shift kullanmamak, toplam parmak istismarımda pek fark yaratmazdı. Hey, en azından elinden geleni yaptın. HTH. EL.
tzot

Bu, alternatif dosya olarak adlandırılan şeye geçer .
jpaugh

5

Çalışmak için CTRL-W f aldım.
Bu komutlar için sadece yerleşik sürümlerin bulunduğunu keşfetmek için çok uzun mükemmel haritalar harcamam oldukça üzücü.


5

Sorunuzun 2. bölümünün cevabını bilmiyorum, ancak 1. bölüme yardımcı olabilirim.

:e#

Vim, düzenlediği dosyaların (arabelleklerin) bir listesini tutar. Yazarsanız

:buffers

o anda düzenlemekte olduğunuz tüm dosyaları listeler. Bu listedeki yanında% ile dosya geçerli dosyadır. Yanında # olan dosya alternatif dosyadır. : e # geçerli ve alternatif dosya arasında geçiş yapar. O kadar yazmak yerine, F2'yi e: ile eşleştiriyorum, böylece mevcut ve alternatif dosyalar arasında kolayca geçiş yapabilirim. .Vimrc dosyasına ekleyerek komutu F2 ile eşleştiriyorum

nmap `<F2> :e#<CR>`

2
Kullanmak istediğinizi sanmıyorum: e # çünkü bu dosyayı yeniden yükleyebilir. : b # eşdeğeri bu sorun olmadan yapar.
lambacck

İyi bir nokta. Bu, yeniden yüklemeden diğer arabelleğe geçer.
codebunny


2

Yeni bir dosya açtığınızda ( gf veya : n veya başka bir komutla) eski dosya arabellek listesinde kalır. Açık dosyaları şununla listeleyebilirsiniz : ls

Vim'deki arabellekler arasında kolayca gezinmek istiyorsanız, aşağıdaki gibi bir eşleme oluşturabilirsiniz:

nmap <M-LEFT> :bN<cr>
nmap <M-RIGHT> :bn<cr>

Artık Alt + sol ok veya Alt + sağ ok ile arabellekler arasında geçiş yapabilirsiniz.

Eşlemelerle ilgili tüm belgeler burada:

:help map.txt

0

Ben senin gf komut bakmadım ama ben : veya or : find komutunu kullandığını hayal .
Bunun doğru olduğunu varsayarsak : e veya : find ile değiştirin : new (veya : dikey bölme için vnew ) ve dosya aynı pencere yerine yeni bir pencerede açılacaktır.

Örneğin

"Başlık ve cpp arasında geçiş yap
nmap, s:% bul: t: r.cpp <CR>
nmap, S: yeni%: t: ​​r.cpp <CR>
nmap, h:% bul: t: rh <CR>
nmap, H: yeni%: t: ​​rh <CR>
nmap, F: yeni = genişlet ("<dosya>: t") <CR> <CR>
nmap, d: new = genişlet ("<dosya>") <CR> <CR> 


2
gfyerleşiktir. Hepimize aittir. :-)
jpaugh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.