Vim'den bombardıman yaparken kabuk takma adlarını nasıl kullanılabilir hale getirebilirim?


11

Benim içinde .zshrc, bazı adlar beyan ederim. Örneğin, which dbstartbu takma adın içeriğini gösterir.

Eğer o kabuktan vim açarsam, bu bir alt süreçtir. Vim'de shell komutlarını ile çalıştırabilirim :! some_command. :! echo $0Kabuk Vim'in hangi kabuğu kullandığını görmek istersem '/ bin / zsh' çıktısı verir. Ancak, takma adlarım kullanılamıyor.

Vim'den dışarı çıktığımda normal mermilerimi nasıl kullanılabilir hale getirebilirim?

İki fikir:

  • Her nasılsa EXPORTorijinal kabuktan alt sürecine vimve tekrar kabuk alt sürecine takma adlar
  • .zshrcVim'i alt kabuklarını oluştururken okuyacak şekilde yapılandır

senin dahil .zshrctarafından kullanımını gibi görünüyor içine .profile dosyalarını (vim
Kiwy

Yanıtlar:


13

Eski soru, ancak zsh'deki vim için en temiz çözüm ~/.zshenv, zsh'ın tüm kabuklar, giriş, etkileşimli veya başka bir şekilde yüklediği dosyaya takma ad eklemekti . Bu, vim veya zsh'yi bayraklarla başlatmayı ve bununla ilgili olası sorunları önler.

Burada ~/.zshenvvs ile ilgili güzel bir açıklama ~/.zshrcvar: http://tanguy.ortolo.eu/blog/article25/shrc

Temel olarak, zsh her zaman kaynak yapar ~/.zshenv. Etkileşimli kabuklar kaynağı ~/.zshrcve giriş kabukları kaynağı ~/.zprofileve ~/.zlogin. Bu nedenle, etkileşimli bir giriş kabuğu kaynakları ~/.zshenv ~/.zprofile ~/.zlogin ~/.zloginve bir vim gibi etkileşimli olmayan, giriş yapmayan bir kabuk, yalnızca kaynakları çalıştırmak için kullanır ~/.zshenv.


Bu, yalnızca bağlantıya verilen bir yanıt değildir, ancak bağlantıdaki farkın açıklamasını sıralıyorsanız en iyisi olacaktır; böylece herkes buradaki açıklamadan faydalanabilir ve linkrottan güvende oluruz.
HalosGhost

1
Cevabım bağlantıdaki ana noktalarla güncellendi.
Kevin Lee

Bu benim için diğer cevaplardan katlanarak daha iyi çalıştı. Vim'in etkileşimli bir kabuk başlatması için eklediğimde, hemen askıya alındı. (Daha önce var olduğunu bilmiyordum) .zshenv dosyasını kullandığımda, takma adlarımı geri aldım!
Caleb

5

Bu zsh için çalışıyor gibi görünüyor:

  • Bulunduğunuz $ZDOTDIR=dizinin bulunduğundan emin olun .zshrc. Örneğin,export ZDOTDIR=$HOME
  • Olarak .vimrc, set shell=zsh\ -iya da set shellcmdflag+=iaynı etki için.

-iEtkileşimli modda başlatıldığında, yükleri zshell çünkü $ZDOTDIR/.zshrc. Ayrıntılar man zshiçin bakın ve arayın $ZDOTDIR.


1
Hmmm, bu benim için garip bir sorun yaratıyor: sistem panosuna kopyalamak "+yşimdi olduğu gibi Vim'i askıya alıyor! superuser.com/questions/712245/…
Nathan Long

5
Vimim açılır açılmaz askıya alınır.
Caleb

0

İçinde bulunduğunuzda vimve bunu kullandığınızda :!some_command, ortam değişkeni tarafından tanımlanan kabuğu kullanıyor olduğuna inanıyorum $SHELL.

Bu yapılandırılabilir, bu nedenle dosyanızdaki $SHELLdavranışı geçersiz kılmak suretiyle değiştirebilirsiniz .$HOME/.vimrczsh

:set shell
shell=/bin/bash
:set shell=zsh\ -i

Veya .vimrcbu 2 satırdan birini kullandığınızda

 set shell=/bin/bash\ -i
 set shell=/bin/zsh\ -i

Vim yardımı

Daha fazla bilgi için :help shelliçeriden bakın vim.

:!{cmd}                 Execute {cmd} with the shell.  See also the 'shell'
                        and 'shelltype' option.
                        Any '!' in {cmd} is replaced with the previous
                        external command (see also 'cpoptions').  But not when
                        there is a backslash before the '!', then that
                        backslash is removed.  Example: ":!ls" followed by
                        ":!echo ! \! \\!" executes "echo ls ! \!".
                        After the command has been executed, the timestamp of
                        the current file is checked timestamp.

Hayır, dediğim gibi: "Yaparsam:! Echo $ 0'ın Vim'in hangi kabuğu kullandığını görmek için yankı verir, '/ bin / zsh' çıktısı verir
Nathan Long

@NathanLong - hayır bence bu sizi yanlış yönlendiriyor, güncellemelerime bakın.
slm

@slm vim değeri çeker $SHELL. Yani kabuğun /bin/bash. Kabuğum ise /bin/zsh, kullanacağı şey budur.
Patrick

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.