Vim'de birden çok dosyayla etkili bir şekilde çalışma


1099

Vim'i Perl betikleri geliştirmek için kullanmaya başladım ve çok güçlü bulmaya başladım.

Sevdiğim bir şey, aynı anda birden fazla dosyayı açabilmektir:

vi main.pl maintenance.pl

ve aralarında şununla zıplayın:

:n
:prev

ve hangi dosyanın açık olduğunu görün:

:args

Ve bir dosya eklemek için şunu söyleyebilirim:

:n test.pl

beklediğim daha sonra dosya listeme eklenir, ancak bunun yerine geçerli dosya listemi siler ve :argsyazdığımda sadece test.plaçık.

Args listeme nasıl dosya ekleyebilir ve silebilirim?


5
tmux ... her bölmede vim kullanın
Tommy

4
@Tommy: bu şekilde sıkıştırılmış / silinmiş içeriği dosyalar arasına yapıştıramazsınız (vims buffer). Varsa yalnızca bir pano yardımcı olabilir (kabul edilen cevaba bakınız: stackoverflow.com/questions/5532878/… )
ChristophS

1
:Nönceki dosyaya gitmenin daha kolay bir yolu gibi görünüyor ...
Gert van den Berg

vimcasts.org/categories/the-argument-list ? VimCasts vim öğrenirken gerçekten şiddetle tavsiye edilir.
mcepl

Yanıtlar:


1171

Neden sekmeleri (Vim 7'de tanıtıldı) kullanmıyorsunuz? Sen ile sekmeler arasında geçiş yapabilirsiniz :tabnve :tabpile, :tabe <filepath>yeni bir sekme ekleyebilirsiniz; ve normal sekmelerle :qveya :wqbir sekmeyi kapatırsanız. Eğer eşlerseniz :tabnve :tabpsizin için F7/ F8tuşları dosyaların arasında kolayca geçiş yapabilirsiniz.

Oradaki birçok dosya değilseniz veya Vim 7 yoksa da birden fazla dosya içinde ekranınızı bölebilirsiniz: :sp <filepath>. Ardından Ctrl+ ile bölme ekranları Wve ardından taşımak istediğiniz yönde bir ok tuşu arasında geçiş yapabilirsiniz (veya wsonraki ve Wönceki bölme ekranı için ok tuşları yerine )


72
Bir sekmeyi kaydetmek ve kapatmak için ZZ, :wq(normalde kaydedip kapatmak gibi) yerine de kullanabilirsiniz
Andreas Grech

40
Ubuntu 10.10'da vim-gnome paketini kullanıyorum ve Ctrl + PageUp ve Ctrl + PageDown kullanarak sekmeler arasında geçiş yapabilirim. Hiçbir şey yapılandırmam gerekmiyordu; varsayılan değerdi.
Joey Adams

268
Ayrıca, düzenleme modunda bir gtsonraki sekmeye gTgider ve bir önceki sekmeye gider.
Dean

40
Ngt kullanarak herhangi bir sekmeye atlayabilirsiniz, burada n sekmenin dizinidir (bir ile başlayan). Dosya adının yanında her sekmenin dizinini görüntüleyen bir seçenek olduğunu düşünüyorum, ancak ne olduğunu bilmiyorum. Biri bilirse, duymak isterim.
void-pointer

81
Ayrıca -p, komut satırından sekmelerdeki birden çok dosyayı açmak için bayrağı kullanabileceğinizi unutmayın . Örneğin, gvim -p main.pl maintenance.plbu iki dosyayı sekmelerde açar.
Matthew Strawbridge

554

Liste

Geçerli arabelleklerin listesini görmek için şunu kullanıyorum:

:ls

açılış

Yeni bir dosya açmak için şunu kullanıyorum

:e ../myFile.pl

Geliştirilmiş sekme tamamlanması ile (koyun set wildmenuGözlerinde farklı .vimrc).

Not: Sizin için :findbir dizi yolu arayacak olanı da kullanabilirsiniz , ancak önce bu yolları özelleştirmeniz gerekir.


anahtarlama

Tüm açık dosyalar arasında geçiş yapmak için şunu kullanıyorum

:b myfile

gelişmiş sekme tamamlama özelliğiyle (sabit set wildmenu).

Not: :b#son ziyaret edilen dosyayı seçer, böylece iki dosya arasında hızlıca geçiş yapmak için kullanabilirsiniz.


Pencereleri kullanma

Ctrl-W sve Ctrl-W vmevcut pencereyi yatay ve dikey olarak bölmek için. Ayrıca :splitve :vertical split( :spve :vs)

Ctrl-W waçık pencereler arasında geçiş yapmak için ve Ctrl-W h(veya jveya kveya l) açık pencereler arasında gezinmek için.

Ctrl-W cgeçerli pencereyi kapatmak ve geçerli pencere Ctrl-W odışındaki tüm pencereleri kapatmak için.

Vim'yi bir -oveya işaretiyle başlatmak -O, her dosyayı kendi bölmesinde açar.


Tüm bunlarla Vim'de sekmelere ihtiyacım yok ve parmaklarım tamponlarımı buluyor, gözlerimi değil.

Not: Tüm dosyaların aynı Vim örneğine gitmesini istiyorsanız, Vim --remote-silentseçeneğini başlatın .


4
Birden fazla tamponla oynamanız durumunda LustyJuggler'ı tavsiye ederim .
Arun M

1
Birden çok dosyayla çalışırken en sık kullanılan vim komutları için çok güzel bir hızlı başvuru yaptığınız için teşekkür ederiz.
49'da parçacık

9
:bçok güçlü bir komuttur, çünkü hem tampon numaralarını hem de tampon isimlerini argüman olarak kabul edebilir. Dahası? Ayrıca dosya adının herhangi bir kısmında sekme tamamlamayı da destekler. De ki, size yazabilir tampon 2'de açık fan.txt var :b 2<Enter>ya :b foo.txtya :b oo<Tab><Enter>bu dosyayı düzenlemek için. Evet, <Tab> tuşuna bastığınızda sonuncusu 'oo'yu' foo.txt 'olarak tamamlar.
Susam Pal

21
Benim .vimrc bu satırı vardır: nnoremap gb :ls<cr>:b<space>. Ben yazdığınızda gbkomut modundayken, benim açık tamponlarını ve türlerini listeler :b , bir tampon adı / numarası yazmaya başlamak üzere hazır.
nkorth

5
Kesin :bolduğu sürece bir alt dize eşleşmesini kabul edeceğinden de bahsetmek gerekir . Eğer açık dosya varsa, yani foo, barve bazsadece :b zsizi geçmek için yeterli baztampon ve :b ooya :b ogötürecektir footampon.
Soren Bjornstad

233
:ls

açık tamponların listesi için

  • :bp önceki tampon
  • :bn sonraki tampon
  • :bn( nbir sayı) n. arabelleğe git
  • :b <filename-part> otomatik tamamlama sağlayan sekme tuşu ile (müthiş !!)

Bazı vim sürümlerinde bnve bpaslında bnextve bprevioussırasıyla. Otomatik sekme tamamlama bu durumda yardımcı olur.

Veya normal moddayken, ^üzerinde çalıştığınız son dosyaya geçmek için tuşlarını kullanın.

Ayrıca, vim oturumlarını kaydedebilirsiniz

:mksession! ~/today.ses

Yukarıdaki komut geçerli açık dosya arabelleklerini ve ayarlarını kaydeder ~/today.ses. Bu oturumu kullanarak şunları yükleyebilirsiniz:

vim -S ~/today.ses

Dün kaldığınız yeri hatırlamakta güçlük çekmeyin. ;)


belirli bir arabelleğe git: N CTRL- ^
Tom Yang

8
@shyam Sanırım seni seviyorum! Her nasılsa mksession komutundan emin olamadım, ama bugün maviden, kolayca açmak için bir dosya listesini kaydetmenin bir yolu olması gerektiğine karar verdim. Bu, şeylerin tam durumunu (pencere bölmeleri, arabellek konumları, vb.) Sakladığı bile daha da iyidir. Çok teşekkürler!
Kasapo

Ayrıca, "dosyayı son kez bulunduğunuz yere atlamak için işaretini kullanın.
Chromium

113

Listeye eklemek için args:

:argadd

argsListeden silmek için :

:argdelete

Senin örnekte, kullanabilirsiniz :argeditiçin test.pl eklemek test.pl argstek adımda listesi ve düzenlemek dosyasını.

:help args çok daha fazla ayrıntı ve gelişmiş kullanım sağlar


4
Bu gerçekten sorulan sorunun cevabıdır, ancak başlık verildiğinde diğer cevaplar mükemmeldir.
Soren Bjornstad

48

Arabellek komutlarını kullanıyorum - :bn(sonraki tampon), :bp(önceki tampon) :buffers(açık tamponları listele) :b<n>(tampon arabayı n) :bd(tamponu sil). :e <filename>yeni bir tamponda açılacak.


18
: ls daha hızlı: tamponlar
aehlke

42

Açtığınız dosyaların listesine bakmak için yanlış komut kullanıyor olabilirsiniz.

:lsAçtığınız dosyaların listesini görmek için bir yapmayı deneyin ;

   1 %a   "./checkin.pl"            line 1
  2 #    "./grabakamailogs.pl"     line 1
  3      "./grabwmlogs.pl"         line 0
  etc.

Daha sonra, listelenen numaralara başvurarak dosyalar arasında sıçrama yapabilirsiniz, örneğin: 3b

veya numarayı girerek ancak b yerine sb kullanarak ekranınızı bölebilirsiniz.

Bir kenara göre% şu anda görünen dosyaya ve # ise alternatif dosyaya atıfta bulunur.

Tuşuna basarak bu iki dosya arasında kolayca geçiş yapabilirsiniz. Ctrl Shift 6

Düzenleme: sildiğiniz şeyleri içeren 0-9 kayıtları da dahil olmak üzere kayıtlarınızın mevcut içeriğini görmek için :lskullanabileceğiniz gibi :reg. Bu, özellikle daha önce sildiğiniz bazı metinleri yeniden kullanmak istiyorsanız kullanışlıdır.


2
% Ve # gibi ilgili bilgileri bir kenara görmek güzel. +1
Ashish

35

Vim (ancak orijinal Vi! Değil) (birçok bağlamda) arabelleklerden daha üstün bulduğum sekmeler var. :tabe [filename]Bir dosyayı yeni bir sekmede açmayı söyleyebilirsiniz . Sekmeler arasında geçiş yapmak, sekmeyi tıklatarak veya [ n ] gtve tuş kombinasyonlarıyla yapılır gT. Grafik Vim'in grafik sekmeleri bile vardır.


1
Teşekkürler, kulağa hoş geliyor, ancak maalesef sunucuda sadece VIM 6.1 yüklü.
Edward Tanguay

1
Sekmeler wildcard ile çok kullanışlı: vim -p dir/*. Maks sekme boyutu 10'dur, ancak bunu başka bir değere ~/.vimrcayarlayarak değiştirebilirsiniz tabpagemax.
Campa

27

Burada birçok cevap var! Tekerleği yeniden icat etmeden kullandığım şey - en yakın zamanda (çok yakında ölmeyecek ve birçok kişi tarafından kullanılacak) eklentiler ultra hızlı ve geeky.

  • ctrlpvim / ctrlp.vim - dosyayı adına göre veya sadece adına göre bulanık arama bulmak için
  • jlanzarotta / bufexplorer - açık arabelleklere göz atmak için (son zamanlarda kaç açtığınız ve değiştirdiğiniz dosyayı hatırlamadığınızda ve muhtemelen Ag ile aradığınız için nerede olduklarını hatırlamıyorsanız)
  • rking / ag.vim gitignore'a göre dosyaları aramak için
  • scrooloose / nerdtree dizin yapısını görmek, etrafa bakmak, dosya eklemek / silmek / değiştirmek

DÜZENLEME: Son zamanlarda kullanıyoruz dyng / ctrlsf.vim (Rakipsiz arama gibi) içeriğe görüntüsü aramak ve motoru açık ag için ripgrep . Performans olağanüstü.

EDIT2: birlikte CtrlSF kullanabileceğiniz mg979 / vim-işitsel çoklu , birden fazla dosya için yapmak değişiklikler bir kez ve daha sonra tek seferde Onları kurtaracağız sonunda.


2
ctrlp taşındı ve şimdi ctrlpvim / ctrlp.vim'de
Dave

1
Bu doğru cevap! Neden daha fazla oy yok?
Thomas Möbius

2
Daha fazla oyu yok çünkü soru 2008'de soruldu. :)
burnettk

kesinlikle. Bu eklentiler olmadan dev bir ortamda vim düşünemiyorum.
Edgar Alloro

25

Yalnızca BİR bağımsız değişkeni beğenir :eve :baddkabul eder, bu nedenle aşağıdakiler başarısız olur

:e foo.txt bar.txt
:e /foo/bar/*.txt
:badd /foo/bar/*

Vim içinden birden fazla dosya eklemek istiyorsanız şunu kullanın: arga[dd]

:arga foo.txt bar.txt
:arga /foo/bar/*.txt
:argadd /foo/bar/*

21

Bu ileti dizisindeki bazı yanıtlar sekmelerin kullanılmasını ve diğerleri de aynı şeyi gerçekleştirmek için arabellek kullanılmasını önerir. Sekmeler ve Tamponlar farklıdır. Bu yazıyı okumanızı şiddetle tavsiye ederim " Vim Tab delilik - Tamponlar vs Tablar ".

İşte makaleden aldığım güzel bir özet:

Özet:

  • Arabellek, bir dosyanın bellek içi metnidir.
  • Pencere, arabellekteki görünüm alanıdır.
  • Sekme sayfası bir pencere koleksiyonudur.

2
Bu özeti :help windowVim yazarak alabilirsiniz
icc97

19

Vim içinde birden fazla dosya kullanırken, bu komutları çoğunlukla kullanırım (~ 350 dosya açıkken):

  • :b <partial filename><tab> (bir tampona atla)
  • :bw (tampon silme, bir tamponu kaldırma)
  • :e <file path> (düzenle, yeni bir arabellek aç>
  • pltags - altyordam / yöntem tanımlarına atlamayı etkinleştir

2
350 dosya !!! Bu etkileyici. atlamak için doğru tamponu nasıl buluyorsun? Hiç bölünmeler yaptın mı?
Brian O'Dell

3
@ BrianO'Dell :b <partial filename><tab>artı set wildmenusenin içinde .vimrciyi açık tamponların tonlarca varken için işler. Sonra sadece kısmi eşleşir ve buldukları arasında ilerlersiniz. Diğer iyi editörlerde bulanık bulmaya sahipsiniz ancak normalde bu bulanık bulmayı sadece açtığınız dosyalarla kısıtlayamazsınız.
icc97

17

Cevabın hiçbirinde yer almadığı için başka bir cevap eklemek

Görüntülemek için tüm arabellekleri değiştirmek için tab.

 :tab sball

sekme görünümünde tüm arabellekleri açar. Sonra sekmeyle ilgili komutları kullanabiliriz

gt or :tabn           "    go to next tab
gT or :tabp or :tabN  "    go to previous tab

ayrıntıları :help tab-page-commands.

Vim'e sekme görünümü olarak birden çok dosyayı açmasını söyleyebiliriz vim -p file1 file2. alias vim='vim -p'yararlı olacaktır.
Aynı şey, aşağıdaki oto komuta sahip olarak da elde edilebilir.~/.vimrc

 au VimEnter * if !&diff | tab all | tabfirst | endif

Neyse soruyu cevaplamak için: arg listesine eklemek için: arga file,

Arg listesinden silmek için: argd pattern

Daha fazla :help arglist


16

Vim global markalarını kullanmak isteyebilirsiniz .

Bu şekilde dosyalar arasında ve hatta dosyadaki işaretli konuma hızla sıçrayabilirsiniz. Ayrıca, tuş komutları kısadır: 'C beni çalıştığım koda götürüyor, 'T götürür, beni çalıştığım birim testine götürür.

Yerleri değiştirdiğinizde, işaretleri sıfırlamak da hızlıdır: mC yeni kod noktasını mT işaretler, yeni test noktasını işaretler.


12

Aynı .vimrc dosyasını gVim ve komut satırı Vim için kullanıyorum. Ben gVim sekmeleri ve Vim komut satırında arabellekleri kullanma eğilimindedir, bu yüzden her ikisi ile çalışmayı kolaylaştırmak için .vimrc ayarladım:

" Movement between tabs OR buffers
nnoremap L :call MyNext()<CR>
nnoremap H :call MyPrev()<CR>

" MyNext() and MyPrev(): Movement between tabs OR buffers
function! MyNext()
    if exists( '*tabpagenr' ) && tabpagenr('$') != 1
        " Tab support && tabs open
        normal gt
    else
        " No tab support, or no tabs open
        execute ":bnext"
    endif
endfunction
function! MyPrev()
    if exists( '*tabpagenr' ) && tabpagenr('$') != '1'
        " Tab support && tabs open
        normal gT
    else
        " No tab support, or no tabs open
        execute ":bprev"
    endif
endfunction

Bu, Hve için mevcut eşlemeleri engeller L, ancak dosyalar arasında geçişi son derece hızlı ve kolay hale getirir. Sadece Hsonraki ve Lönceki için vurmak ; İster sekme ister arabellek kullanıyor olun, amaçlanan sonuçları elde edersiniz.


1
Bu eşlemeleri seviyorum. Ayrıca Ctrl-H, Ctrl-L'yi deneyin. Firefox ve GNOME terminalini aynı eşlemelerle ayarlıyorum. Tutarlı sekme tuşu kısayollarına sahip olmak çok güzel.
cmcginty

4
mevcut eşleştirmeleri gizlemek için ctrl yerine lider anahtarınızı kullanın
aehlke

10

Birden fazla arabellek kullanacaksanız, bence en önemli şey, bıraktığınız dosyada kaydedilmemiş değişiklikleriniz olsa bile arabellekleri değiştirmenize izin verecek şekilde gizli ayarlamaktır.


9

Eğer sadece vim yerleşik komutları kullanarak şimdiye kadar testere birden tamponları arasında anahtara şudur, en iyisini o:

nnoremap <Leader>f :set nomore<Bar>:ls<Bar>:set more<CR>:b<Space>

Mükemmel hem birleştirir :lsve :btüm açılmış tamponlarını listeleme ve anahtar tamponuna girişine sizin için komut bekliyor - komutları.

Yukarıda vimrc'de eşleme verildiğinde, yazdıktan sonra <Leader>f,

  • Tüm açık arabellekler görüntülenir
  • Yapabilirsin:
    • Tip 2323 tampon gitmek için,
    • Tip #alternatif / MRÜ tampon gitmek için,
    • Dosyanın kısmi adını yazın, sonra yazın <Tab>veya <C-i>otomatik tamamlamak için,
    • Ya da sadece <CR>veya <Esc>mevcut tamponda kalmak için

Yukarıdaki tuş eşlemesi için çıktının bir anlık görüntüsü:

:set nomore|:ls|:set more
  1  h    "script.py"    line 1
  2 #h  + "file1.txt"    line 6  -- '#' for alternative buffer
  3 %a    "README.md"    line 17 -- '%' for current buffer
  4       "file3.txt"    line 0  -- line 0 for hasn't switched to
  5     + "/etc/passwd"  line 42 -- '+' for modified
:b '<Cursor> here'

Yukarıdaki anlık görüntüde:

  • İkinci sütun: %aakım hiçin, gizli için,# için, önceki için boş için değiştirilmedi.
  • Üçüncü sütun: +değiştirildi.

Ayrıca, kesinlikle öneririm set hidden. Bkz :help 'hidden'.


Bu harika bir fikir! Ben kullanarak oldum :bve :lsbağımsız bir sürü ama. Bence bir sayfa değerinde arabelleklerden daha fazlasına sahip olduğunuzda bu daha az kullanışlı olur, ancak yine de geri dönebilirsiniz:b
icc97

Yardımcı olduğunu gördüğüme sevindim. Şerefe! :)
qeatzy

Bu Vim wikia'dan biraz daha kısaltabilirsiniz nnoremap <leader>f :ls<cr>:b<space>, bu da 'daha fazla' komutuyla ilgili sorunlara neden olabilir
icc97

Evet, daha az dosya açıksa (normal kullanım durumu) bu şekilde mükemmel çalışır. set moreşeyler yalnızca açık olan birden fazla dosya (birden fazla sayfa) olduğunda fark yaratır, örn vim /usr/include/*.
qeatzy

8

Aşağıdakileri kullanıyorum, bu size Sublime Text / Textmate gibi diğer editörlerde beklediğiniz birçok özelliği sunuyor.

  1. 'Sekme sayfaları' değil arabellekler kullanın. Tamponlar hemen hemen tüm diğer editörlerde sekmelerle aynı kavramdır.
  2. Eğer kullanabilirsiniz sekmeleri sahip aynı görünüm istiyorsanız vim-havayolu Gözlerinde farklı aşağıdaki ayarı ile eklenti .vimrc: let g:airline#extensions#tabline#enabled = 1. Bu, açık sekme sayfası olmadığında tüm arabellekleri otomatik olarak sekme başlıkları olarak görüntüler
  3. Sırasıyla önceki / sonraki arabellekleri veren ve bunlara geçmek için Tim Pope'in vim-engeli olmayan kullanın (artı bir dizi diğer güzellik)[b]b
  4. Var set wildmenusenin içinde .vimrcyazarken o :b <file part>+Tab a size ilerlemek için / sağ okları sola kullanabileceğinizi olası tampon bir listesini alacak tampon için
  5. Tim Pope'nin vim-takıntılı eklentisini havayolu ile güzel oynayan oturumları saklamak için kullanın ( Oturumlar ve eklentilerle çok fazla acı çektim )
  6. Tim Pope'un vim-sirke eklentisini kullanın. Bu yerli ile çalışır, :Exploreancak çalışmayı çok daha kolay hale getirir. -Explorer'da bir dizine gitmekle aynı anahtar olan explorer'ı açmak için yazmanız yeterlidir. Gezinmeyi hızlandırır (ancak fzf ile bunu nadiren kullanıyorum)
  7. fzf (bir vim eklentisi olarak kurulabilir) aynı zamanda dosyaları (ve arabellekleri) aramak için kullanabileceğiniz gerçekten güçlü bir bulanık bulucu. fzf ayrıca fd ile çok güzel oynuyor (bulmanın daha hızlı bir versiyonu)
  8. Kod tabanınızda arama yapmak için Ripgrep'i vim- ripgrep ile kullanın ve ardından arama yapmak ve değiştirmek için sonuçlarda kullanabilirsiniz .:cdo

fzf ve fzf-vim hayatımı değiştirdi, yeterince tavsiye edemez. Ayrıca, konsollarda bile dosyaları aramak için pencerelerde çok iyi çalışır. Windows'ta ripgrep (rg) arka ucunu kullanın, bu da benim deneyimime göre diğer find / grep araçlarından daha iyi performans gösteriyor (silversearcher veya de varsayılan pencereler fzf'nin iirc kullandığını buluyor). Herhangi bir öğe listesinde arama yapmak için kullanabilirsiniz: en son kullanılan dosyalar, şu anda açık arabellekler, geçerli arabellekteki satırlar, kod tabanındaki satırlar (cwd), etiketler, .. kendi liste bulanık aramanızı kolayca programlayabilirsiniz. Çok iyi! (Ctrl-p'den geldim ve asla geriye bakmadım)
Emile Vrijdags

7

Birden fazla dosyayla etkili bir şekilde çalışmanın yolu tmux kullanmak.

Pencereleri aşağıdaki gibi dikey ve yatay olarak bölmenize izin verir:

resim açıklamasını buraya girin

Hem mac hem de linux makinelerimde bu şekilde çalışıyor ve sağlanan yerel pencere bölmesi anahtarlama mekanizmasından (Mac'lerde) daha iyi buluyorum. Anahtarlamayı daha kolay buluyorum ve sadece tmux ile (aynı dizinde yeni sayfa ') mac'umda (aynı dizinde yeni bölmeler açmak için seçenekler var gibi görünüyor olsa da) çalışmayı başardım. şaşırtıcı derecede kritik bir parça. Mevcut konumdaki anında yeni bir bölme inanılmaz derecede faydalıdır. Her iki işletim sistemi için de aynı tuş kombinasyonlarına sahip yeni bölmeler yapan bir yöntem benim için kritik ve gelecekteki kişisel uyumluluk için herkes için bir bonus. Birden fazla tmux bölmesinin yanı sıra, birden çok sekme kullanmayı denedim, ör.resim açıklamasını buraya girin birden çok yeni pencereresim açıklamasını buraya girinve sonunda çoklu tmux bölmelerinin benim için en kullanışlı olduğunu buldum. Çok 'görselim' ve çeşitli bağlamlarımı önümde tutuyorum, birbirine bölmeler olarak bağlıyım.

tmux, screeneskisinin kullanmadığı yatay ve dikey bölmeleri de destekler (mac'in iterm2'si destekliyor gibi görünse de, yine de geçerli dizin ayarı benim için çalışmadı). tmux 1.8


1
"Birden çok pencere" yapay örneğini gördüğümde lol vardı. Umarım kimse böyle çalışmaz :-) Her neyse, ben daha iyi (ben tmux i3wm geçti) döşeme wm kullanın. Cevabınızı tamamlamak için.
lzap

1
Tmux harika ve bu yaklaşımı uzun süre kullandım, ancak iki dosya arasında gezinmeyi ve kopyalamayı ve yapıştırmayı daha zor hale getiriyor.
neallred

1
Bunu yapardım, ancak birden fazla vim tamponuna sahip olmak, yapıştırmanız / yapıştırmanız gerektiğinde üstündür
Titou

3

Ben komut satırını kullanın ve çok git, bu yüzden benim bashrc bu diğer adı var:

alias gvim="gvim --servername \$(git rev-parse --show-toplevel || echo 'default') --remote-tab"

Bu, her yeni dosyayı mevcut bir pencerede yeni bir sekmede açar ve her git deposu için bir pencere oluşturur. Bu nedenle, A deposundan iki dosya ve B deposundan 3 dosya açarsanız, biri iki sekmeli repo A için ve biri üç sekmeli repo B için iki pencere ile karşılaşırsınız.

Açtığınız dosya bir git deposunda yer almıyorsa, varsayılan bir pencereye gider.

Sekmeler arasında geçiş yapmak için şu eşlemeleri kullanıyorum:

nmap <C-p> :tabprevious<CR>
nmap <C-n> :tabnext<CR>

Aynı anda birden fazla dosya açmak için bunu diğer çözümlerden biriyle birleştirmelisiniz.


3

Dosyamda gizli olarak ayarlanmış birden çok arabellek kullanıyorum ~/.vimrc.

Mini-buffer explorer betiği, arabelleklerinizin güzel ve kompakt bir listesini almak için de güzel. Sonra :b1veya :b2... uygun arabelleğe gitmek veya mini-tampon gezgini ve arabellekleri kullanarak sekmeyi kullanın.


2

birden fazla dosyayı düzenlemek için haritaları takip etmeyi deneyin

"bölünmüş pencereler

nmap <leader>sh :leftabove vnew<CR>

nmap <leader>sl :rightbelow vnew<CR>

nmap <leader>sk :leftabove new<CR>

nmap <leader>sj :rightbelow new<CR>

" etrafında dolanmak

nmap <C-j> <C-w>j

nmap <C-k> <C-w>k

nmap <C-l> <C-w>l

nmap <C-h> <C-w>h


2

Ben yapılan çok basit bir video kullandığım o iş akışını gösteren. Temelde Ctrl-P Vim eklentisini kullanıyorum ve arabellek navigasyonunu Enter tuşuna eşledim.

Bu şekilde Normal modda Enter tuşuna basabilir, açık dosyalar listesine bakabilirim (ekranın altındaki küçük yeni bir pencerede görünür), düzenlemek istediğim dosyayı seçip tekrar Enter tuşuna basabilirim. Birden çok açık dosyada hızlı arama yapmak için dosya adının bir kısmını yazın, dosyayı seçin ve Enter tuşuna basın.

Videoda çok fazla dosyam yok, ancak birçoğuna sahip olmaya başladığınızda inanılmaz derecede yardımcı oluyor.

Eklenti, arabellekleri bir MRU siparişi kullanarak sıraladığından, Enter tuşuna iki kez basabilir ve en son düzenlediğiniz dosyaya atlayabilirsiniz.

Eklenti yüklendikten sonra, ihtiyacınız olan tek yapılandırma şunlardır:

nmap <CR> :CtrlPBuffer<CR>

Tabii ki farklı bir anahtarla eşleştirebilirsiniz, ancak girmek için eşlemenin çok kullanışlı olduğunu düşünüyorum.


2

Eklentiyi kullanmanızı öneririm

NERDtree

İşte talimatlarla github bağlantısı.

Nerdtree

Vim-plug'ı eklenti yöneticisi olarak kullanıyorum, ancak Vundle'ı da kullanabilirsiniz.

vim-fiş

Vundle


2

Benim ve diğer birçok vim kullanıcısında en iyi seçenek,

  • Dosyayı kullanarak açın,

: e dosya_adı.uzantı

Ve sonra sadece son arabelleğe geçmek için Ctrl + 6 tuşlarına basın. Veya her zaman

: ls arabelleği listelemek ve sonra b'yi ve ardından arabellek numarasını kullanarak arabelleği değiştirmek için kullanılır.

  • Kullanarak dikey veya yatay bir bölme yaparız

: dikey bölme için vsp

: yatay bölme için sp

Ve sonra <C-W><C-H/K/L/j>çalışma bölünmesini değiştirmek için.

Herhangi bir dosyayı istediğiniz sayıda bölmede düzenleyebilirsiniz.


Lütfen bu soruda zaten mevcut olan diğer cevaplar üzerinde geliştiğinden emin olmak için cevabınızı düzenleyin .
hongsy

1

VIM kullanmaya başladığımda, sekmelerin farklı pencere düzenleri olarak kullanılması gerektiğini fark etmedim ve arabellek, birden fazla dosya düzenleme / aralarında geçiş yapma rolünü üstleniyor. Aslında başlangıç ​​sekmelerinde v7.0'dan önce bile yok ve bir terminal sekmesinin içinde bir VIM açtım (şu anda gnome-terminalini kullanıyordum) ve alt + sayıları kullanarak sekmeler arasında geçiş yapıyorum, çünkü : buffers,: bn ve: bp benim için çok fazlaydı. VIM 7.0 piyasaya sürüldüğünde, çok sayıda dosyayı yönetmenin daha kolay olduğunu ve ona geçildiğini fark ettim, ancak son zamanlarda, bir şey olmadıkça, arabelleklerin her zaman yol alması gerektiğini fark ettim: doğru çalışmasını sağlamak için yapılandırmanız gerekir.

Bu yüzden vim-havayolu denedim ve görsel üst sekme benzeri arabellek çubuğunu etkinleştirdim, ancak grafik iTerm2 ile sorun yaşıyordu, bu yüzden birkaç tane daha denedim ve MBE benim için en iyi şekilde çalışıyor gibi görünüyor. Orijinal + (geçerli sayfanın başına / kuyruğuna gitmek) benim için çok da yararlı olmadığından shift + h / l'yi kısayol olarak ayarladım.

map <S-h> :bprev<Return>
map <S-l> :bnext<Return>

Gt ve gT'den bile daha kolay gibi görünüyor ve: e de: tabnew'den daha kolay. Buldum: bd kadar uygun değil: q olsa da (MBE onunla bazı sorun yaşıyor) ama ben tampon tüm dosyaları ile yaşayabilir düşünüyorum.



0

Bu konudaki cevapların çoğu elbette iyi olan düz vim komutlarını kullanıyor, ancak özellikle yararlı bulduğum eklentiler ve işlevlerin bir kombinasyonunu kullanarak kapsamlı bir cevap vereceğimi düşündüm (bu ipuçlarından en azından bazıları Gary Bernhardt'ın dosyasından geldi) gezinme ipuçları ):

  1. Son iki dosya arasında geçiş yapmak için iki <leader>kez basın . <leader>Boşluk çubuğuna atamanızı öneririm :

    nnoremap <leader><leader> <c-^>
    
  2. Bir projeyi hızlı bir şekilde hareket ettirmek için cevap CtrlP gibi bulanık bir çözümdür . Ben bunu bağlamak <leader>ahızlı erişim için.

  3. Şu anda açık olan arabelleklerin görsel temsilini görmek istediğimde BufExplorer eklentisini kullanıyorum . Basit ama etkili.

  4. Dosya sistemine göz atmak istersem, komut satırını veya harici bir yardımcı programı (Quicklsilver, Afred vb.) Kullanırdım, ancak mevcut proje yapısına bakmak için NERD Tree bir klasiktir. 2Ana dosya bulma yönteminiz yerine bunu kullanmayın . Seni gerçekten yavaşlatacak. Bağlamayı kullanıyorum <leader>ff.

Bunlar dosyaları bulmak ve açmak için yeterli olmalıdır. Oradan elbette yatay ve dikey yarıklar kullanın. Bölmeler konusunda bu işlevleri özellikle yararlı buluyorum:

  1. Yeterli yer olmadığında daha küçük alanlarda yeni bölünmeler açın ve onları navigasyonda genişletin. Bunların tam olarak ne yaptığı hakkında yorumlar için buraya bakın :

    set winwidth=84
    set winheight=5
    set winminheight=5
    set winheight=999
    
    nnoremap <C-w>v :111vs<CR>
    nnoremap <C-w>s :rightbelow split<CR>
    set splitright
    
  2. Kolayca bölünmüş olarak bölün:

    nnoremap <C-J> <C-W><C-J>
    nnoremap <C-K> <C-W><C-K>
    nnoremap <C-L> <C-W><C-L>
    nnoremap <C-H> <C-W><C-H>
    

0

Aşağıdakileri ekleyerek mutlak bir delisi ve takma adı vimolabilirsiniz :vim -p.bashrc

alias vim="vim -p"

Bu, :tab balldaha sonra vim içinden çağırmak zorunda kalmadan kabuktan sekmelerde birden fazla dosya açılmasına neden olur .

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.