Geçerli dosyanın tam yolunu nasıl görebilirim?


123

Vim'de bir dosyayı düzenlerken, geçerli dosyanın yolunu görmek için bir komut var mı? Bir projede aynı ada sahip birden fazla dosya varsa, bazen bu çok kullanışlıdır.

Yanıtlar:


142

Basabilirsiniz {count}Ctrl-G:

{count}CTRL-G       Like CTRL-G, but prints the current file name with
                    full path.  If the count is higher than 1 the current
                    buffer number is also given.

Düğmesine basılması 1ve ardından Ctrl+ Gakım dosyasının tam yolunu gösterir. Eğer {count}1 'den daha yüksektir, tampon adı da gösterilir.

(Yalnızca Ctrl+ tuşuna basıldığında G, yorumlarda Jasper tarafından belirtildiği gibi Vim'in geçerli çalışma dizinine göre olan yol gösterilir.)

.vimrcDurum satırına tam yolu eklemek için aşağıdaki komutu kullanabilirsiniz , böylece her zaman görünür:

set statusline+=%F

4
Ctrl+GDaha çok 'vim'in cwd'sine göre yol' gibi değil mi?
Jasper,

@ Jasper İyi yakala! Cevap güncellendi.
thameera

4
Bunun C-giçin varsayılan gibi görünüyor 0C-gve ek olarak tampon dizin numarasını (1'den başlayarak) 2C-ggösterir .

Cevabınızı yükseltmek için 100'üncü olduğum için çok mutluyum! Bunun için teşekkürler 1C-g!
kasası

53

Kayıt %mevcut dosyanın adını içerir.

Gösterilen bilgileri görüntülemek için aşağıdaki komutlar girilebilir:

:echo @%                |" directory/name of file
:echo expand('%:t')     |" name of file ('tail')
:echo expand('%:p')     |" full path
:echo expand('%:p:h')   |" directory containing file ('head')

Aranıyor hepsi geçerli dosya, tipi adını görüntülemek için ise :f/ :lsveya basın Ctrl- g(tam yol basın için 1daha sonra Ctrl- g).

İnsert modda tür Ctrl- ro %anki dosyasının adını girmek için.

Aşağıdaki komutlar, geçerli ve alternatif dosyaların tam yolundan oluşan satırları ara belleğe ekler:

:put =expand('%:p')
:put =expand('#:p')

Kaynak: Geçerli dosyanın adını vim wikia'da alın.

İlgili:


2
Bu =expand...ifadeleri Ctrl-R, ekleme modundayken de kullanabileceğinizi belirtmek faydalı olabilir .
çizgi-tom-bang,

22

:!ls %:pGeçerli dosyanın tam yolunu bulmak için kullanabilirsiniz .

Ex bağlamına bağlı olarak, %dosyanın içeriği veya dosya adı anlamına gelir. Dışa aktarırken, geçerli dizine göre dosya yolunu temsil eder. ' %:p' Komutu , tam yol dosya adı değiştiricisini ekleyecektir %.

Gibi başka birkaç ilginç dosya adı değiştiricileri vardır:

  • :~: Dosya yolunu giriş dizinine göre alın (bu, nedense benim için işe yaramadı)
  • :.: Geçerli dizine göre dosya yolunu al ( %varsayılan)
  • :r: Dosya adı kökü. Uzantı olmayan dosyanın adı.
  • :e: Dosyanın uzantısı.
  • :h: Böl /ve sola dön. (Yani eğer bir dosyayı yolunda düzenleyip /tmp/test.txtçalıştırırsam %:p:hgeri dönecektir.)/tmp
  • :t: Böl /ve sağdaki yarıya dön (örneğin, bir dosyayı yolunda /tmp/test.txtçalıştırıp çalıştırırsam %:p:tgeri dönecek)text.txt

Sanırım% demek
istedin

@ JohnO'M. evet, bu doğru teşekkürler: D. Sabit.
CharlesL

7

Mevcut çalışma dizini ile görülebilir :pwd. Elbette, bu sadece dizindir ve dosya adı değildir. Çalışma dizini ve dosya %adını almak için, mevcut dosya hakkında bilgi içeren özel kayıt defterini kullanabiliriz .

Eğer kullanırsanız :echo @%, geçerli dosyanın dizin ve dosya adını elde edersiniz.
Eğer kullanırsanız :echo expand('%:p'), geçerli dosyanın tam yolunu ve dosya adını elde edersiniz. Bu CharlesL'ın cevabına çok benziyor .

Eğer Vim yardımını kullanabilirsiniz çünkü eğer ben, ama, bunu hatırlıyorum :h expand, o zaman bahseder %ve %:pve yakınlarına.



3

Çözümlenen sembolik bağlantılar dahil tüm dosyalar için tam yolu göstermek için aşağıdakileri kullanın.

:echo resolve(expand('%:p'))

3

Çok daha iyi cevaplar var, ancak (nedense) kabuğunu dosyanın tam yolunu bulmak için kullanmak istiyorsanız (bu, kabuk üzerinde dosya üzerinde başka bir işlem yapacaksanız bu daha kullanışlıdır), Unix benzeri bir sistemde çalıştırabilirsiniz:

:!realpath %

veya:

:'<,'>!realpath %

yolu geçerli seçime göre belgeye eklemek için.

Kayıt %her zaman dosyanın adını içerir. Eğer bir config dosyasını düzenliyorsanız, ancak yazma izinleriniz yoksa (ve Vim'i root olarak çalıştırmak istemiyorsanız), gerçek bir dünya örneği olabilir, dosyayı düzenleyebilir ve ardından çalıştırılabilir:

:w ! sudo tee %

dosyayı kaydetmek için (orada küçük bir bit offtopic, ancak bu %kayıt ile başka neler yapılabileceğinin güzel bir örneği ).


realpathPOSIX değil, bu yüzden yapmak daha kolay olabilir:!echo "$PWD/%"
muru

Kabul; İyi karar.
Sam Whited

2

Durum satırınızı görüntülenebilir olacak şekilde ayarlamanız ve onu yola da ayarlamanız gerekir. Aşağıdaki iki satırı ~ / .vimrc dizinine ekleyerek bunu kalıcı olarak yaptım.

set laststatus=2
set statusline+=%F

Eğer sadece bir kere çalıştırmak istiyorsan. Sonra bir belge türünü VIing yaparken

:set laststatus=2       <ENTER>
:set statusline+=%F     <ENTER>

1
Bu, thameera'nın aynı soru üzerine yaptığı cevapla aynı cevaptır .
statox


1

Düzenlemekte olduğunuz dosyanın tam yolunu başlık çubuğunda gösterebilirsiniz, bu dosya yolunu bence göstermenin uygun bir yoludur.

Bunu yapmak için ve titleseçeneğini ayarlamanız gerekir titlestring. Geçerli Aşağıdaki ayarları kullanıyorum:

set title
set titlestring=%{hostname()}\ \ %F\ \ %{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}

Vim ana bilgisayar adını, ardından dosyanın tam yolunu ve ardından dosyanın son değiştirilme zamanını gösterir. Demo için aşağıdaki resme bakın

görüntü tanımını buraya girin

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.