Geçerli dosya adını Vim'deki içeriklere nasıl eklerim?


38

Bazı aramalardan sonra :echo @%, geçerli dosya adını vim ekranının en alt satırında gösterdiğini anladım .

Dosya adını (tam yollu ve tam yolsuz) dosyanın içeriğine çıkmadan koymak istiyorum vim.

Bunu yapmanın bir yolu var mı?

Yanıtlar:


27

Eminim bunu yapmanın başka yolları da vardır ... ama istediğiniz ana komut :r[ead], bir komutun çıktısını ara belleğe ekleyen şeydir.

Yani, sadece dosya adını eklemek için:

:r! echo %

Ve tam yolu dahil etmek için:

:r! echo %:p

Daha fazla bilgi için:

:help read
:help filename-modifiers 

37

Geçerli dosya adı "%kayıt defterinde, bu nedenle (ekleme modundayken) ile ekleyebilirsiniz <c-r>%; tam yol ile eklenebilir <c-r>=expand("%:p"). Sık kullanırsanız bir makroyu yapabilirsiniz. Daha fazla, benzer numaralar için bkz. :h expandVe :h "=.


Belki de yanlış okuyorum ama <c-r>yinele komutu olarak eşlenmemiş?
JC Yamokoski

10
İnsert modunda, bir <c-r>sonraki karakterin bir register olduğunu belirtir.
Kevin

Righto, teşekkürler.
Tamamlama

"%pNormal veya görsel modlarda da yapabilirsiniz .
naught101

15

Görüldüğü gibi :h registers, "%kayıt geçerli dosya adını içerir. :pu[t]Komut metnine bir kayıt içeriğini ekler.

Dolayısıyla, gerçek dosya adını eklemek için bunlardan herhangi birini komut modunda yazabilirsiniz:

:put %

veya

"%p

Dosya adını tam yolla eklemek için,

:put=expand('%:p')

komut modunda.


Daha fazla bilgi:

:h pu[t]

Yazarak "rpkayıt içeriğini yapıştırabilirsiniz "r.


3
Bu :put "%:p"benim için işe görünmüyor. Bu, şu şekilde olduğu gibi, genişletme () ile çalışıyor gibi görünüyor : :put =expand('%:p')bu, <c-r>=expand('%:p')ne yazık ki çok daha az hantal hale getirmiyor .
akavel 16:15

@akavel Haklısın, cevabı güncelleyeceğim. Teşekkür ederim! ;) Ve aslında ikisi de eşit derecede ayrıntılı.
braunmagrin

5

Çalıştırmanın basit bir yolu:

!!echo %
  • !! Geçerli satırı, onu izleyen komutun sonucuyla değiştiriyor.

  • % bu komutta düzenlenen dosyanın adı ile değiştirilir, bu nedenle bu adı düzenlenen dosyaya etkili bir şekilde ekler.

Dosya adı vi (m) komutuna geçirdiğiniz addır ve göreceli veya mutlak bir yol içerebilir. Soyun ve yalnızca dosya adını saklamak istiyorsanız,

!!basename %

1

Bunu sık sık yapmanız gerekiyorsa, http://vim.wikia.com/wiki/Insert_current_filename uyarınca istediğiniz bir tuş sırasını istediğinize bağlamak faydalı olabilir.

geçerli dosya adını, imleç modunda, uzantı modunda ekleme modundayken ekler.

:inoremap \fn <C-R>=expand("%:t:r")<CR>

Uzantı kullanımını korumak için:

:inoremap \fn <C-R>=expand("%:t")<CR>

Dizinin mutlak yolunu eklemek için dosya kullanımdadır:

:inoremap \fn <C-R>=expand("%:p:h")<CR>

Dosyanın kullanımda olduğu dizinin göreli yolunu eklemek için:

:inoremap \fn <C-R>=expand("%:h")<CR>

Her şeyden önce, doğrudan vimoturum için çalışır veya bunu .vimrc(satırın başındaki isteğe bağlı olan çubuğun isteğe bağlı olduğu) içine koyabilirsiniz .


0

Geçerli dosya adını (yol veya uzantı olmadan) geçerli konuma (yeni satır yok, mevcut satırın yerini almaz) eklemenin en basit yoluydu. Yani önceki cevapları ve bu linki birleştirerek , aradığım şey buydu.

Gelen ekleme modu:

<C-R>=expand("%:t:r")

Daha sonra bir dahaki sefere (zaten emri geçmişinde olanlara)

<C-R>=<UP>
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.