Kabuktan Vim komutu nasıl çalıştırılır?


12

Bu aptalca bir soru olabilir, ama bana katlan.

Yeni bir çalışma ortamı kurarken yaptığım bazı şeyleri otomatikleştiriyorum ve Vim komutunu otomatikleştirmek istiyorum :BundleInstall(tüm Vim eklentilerimi yüklemek için).

Bunu kabuktan çalıştırmak mümkün mü?

Alternatif olarak, komut dosyasının Vim'i çalıştırmasını, yürütmesini :BundleInstall, bitmesini ve bitmesini beklemesini sağlamak mümkün mü?

Teşekkürler.

Yanıtlar:


14

Gönderen vim(1)adam sayfası:

+ {Komut}

-c {komut}

{command} ilk dosya okunduktan sonra yürütülür. {command} bir Ex komutu olarak yorumlanır. {Komut} boşluk içeriyorsa, çift tırnak içine alınmalıdır (bu kullanılan kabuğa bağlıdır). Örnek: Vim "+ set si" main.c

Not: En fazla 10 "+" veya "-c" komutu kullanabilirsiniz.


3
Teşekkürler! Aptal hissedeceğimi biliyordum ...: - / Manpage'i tam olarak okumadığım için bana doğru hizmet ediyor. Sonunda kullandım vim +BundleInstall +qall!.
imiric

4

Komutunuzu şu şekilde yürütebilirsiniz:

vim -E -c BundleInstall -c q

bu da terminalinizde bir Vim penceresi açmaktan kaçınacaktır.

Not: İlk cevabım -s, başka bir uygulama için ihtiyaç duyduğum ama burada yanlış olan seçeneği içeriyordu, çünkü Vim'in BundleInstallkomutu tanımlayan eklentiyi kaynaklamak da dahil olmak üzere başlamasının çoğunu engelledi .


1
Teşekkürler, ama bazı nedenlerden dolayı benim için çalışmayacak.
imiric

1
Şimdi nedenini görüyorum. Bunun -sbelirli mesajları engellemekten daha fazlasını yaptığını - aynı zamanda inisiyasyonları da engellediğini - unuttum, bu yüzden BundleInstall'ın tanımı kaynaklanmıyordu. İlk önce böyle bir seçenek eklemek olacaktır düzeltme yapmanın bir yolu -c: --cmd 'runtime plugin/bundle.vim'. Bu dosya adını uygun olacak şekilde düzenleyin. Bkz :help -s-ex.
garyjohn


0

Vim'in manuel olarak başlattığınız gibi tam olarak yüklenmesi gereken durumlarda, bu işe yarar:

vim -c "autocmd! CursorHold * <commands to run>"

Örneğin, çıktısını :mapkabuktan bir dosyaya yeniden yönlendirmek istedim , ancak vim-havayolu şirketinin yalnızca sekmesini görüntüledikten sonra oluşturduğu eşlemeyi yakalamak istedim (üstteki tüm buffername'leri açık gösteren satır). bunu eşzamansız olarak, -cbir dosyaya bir yönlendirme çalıştırmak , eşlemeler yapması için zaman vermiyordu. Daha iyi bir yol olabilir, ama bu benim için işe yarıyor, özellikle de etkinliğin ne kadar süre başlayacağını etkileyen (0.1 saniye) updatetimeayarladığımdan beri . Varsayılan olarak, vim bunu 4 saniyeye ayarlar.100CursorHold

vim -c "autocmd! CursorHold * set nomore | redir! > mapNew | map | redir END | q"
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.