Bash için balık gibi vurgulayan sözdizimi olması için herhangi bir yolu var mı?


41

In balık kabuk , fiili komut satırı sözdizimi vurgulanan geçerli:

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

Bu aynı davranışı bash yapmanın bir yolu var mı?

Aynen böyle bir şey var ama zsh için bash değil. Bunun bash'a taşınması mümkün mü?

Ekran görüntüsünü, açıklamasını veya sağlanan bağlantıyı anlamayanları netleştirmek için: Terminalde girilen asıl metni vurgulamak istiyorum. Komutlar, parantezler, alıntılar, vs.


Bash'ın zsh gibi eklentileri kabul ettiğini düşünmeyin, bu nedenle bash kabuğunun / binary'in özel bir oluşturulmasını gerektirebilir. Bunun yerine sadece balık kullanmamak için herhangi bir sebep var mı? Ayrıca, oynamak için başka bir deniz hayvanına işaret ettiğin ve haha'nın bazı gelişmiş özelliklerini öğrenip öğrenemediğime teşekkür ettiğin için teşekkürler.
Matrix Mole

1
@ Matrix: Balık kullanamıyorum çünkü pes edemediğim çok karmaşık bir bash yapılandırmasına sahibim.
Wuffers

Ne yazık ki, bunun şu anda bash'ta mümkün olduğunu sanmıyorum. Yaptığın araştırmanın da buna işaret ettiğine eminim. Kesinlikle zsh'a geçemiyorsanız, bu anlaşılabilir bir durumdur , ancak aksi takdirde Şubat ayından bu yana güncellenmemiş olmasına rağmen, balık gibi bazı özellikleri zsh ile birleştiren fizsh'a bakmak isteyebilirsiniz; Verdiğin daha sağlam olurdu.
voithos

1
Bu, bash öğrenmek için oldukça faydalı olacaktır, çünkü tamamen farklı bir şekilde oynamaya izin verir. Özel bir karakterden kaçmayı unuttuğunuzu kolayca tespit etmek çok değerli olacaktır.
Sirap

Yanıtlar:


8

Bash readlineetkileşimli girdi için kullanır , bu yüzden sözdizimi vurgulaması bu programda uygulanmalıdır. Böyle bir özelliğin kodlanması hakkında bir Google Grupları tartışması buldum .

Balık kabuğu, bu programa özgü kendi satır düzenleyicisini kullanır ve doğrudan taşınamaz.

Bunun zshbash'a çok benzer olduğunu ve çizgi editörünün genişletilebilir olduğunu görebilirsiniz . Bu özelliği zsh'de etkinleştirmek için zsh-sözdizimi vurgulamasını buldum .


1

GNU Bash'te (ya da GNU Readline'da) sözdizimi vurgulamanın basit bir yolu yoktur , ancak prensipte, tüm kullanıcı girişlerini yerleşik komutunu kullanarak kabuk işlevlerine bağlayarak kendi komut düzenleyicinizi Bash komut dosyalarında uygulamak mümkündür bind -x 'BYTE: SHELL-COMMAND'. Elbette, sözdizimi vurgulama özelliğini kendi çizgi editörünüze entegre etmek mümkündür.

Aslında, ble.shsözdizimi vurgulama ve otomatik öneriler gibi özelliklere sahip bir satır düzenleyici kullandım . Bash 3.0 - 5.0'ı destekliyor. (Neredeyse) saf Bash komut dosyalarında yazıldığından, sadece sourcekomut dosyasını kullanabilirsiniz ~/.bashrc. İşte kurulum için bir örnektir ble.shbashrc (bkz içinde README detaylar için):

$ git clone https://github.com/akinomyoga/ble.sh.git
$ cd ble.sh
$ make
$ make INSDIR="$HOME/.local/share/blesh" install
# bashrc

# Add the following line at the beginning of bashrc
[[ $- == *i* ]] &&
  source "$HOME/.local/share/blesh/ble.sh" --attach=none

# ... other bashrc settings ...

# Add the following line at the end of bashrc
((_ble_bash)) && ble-attach

Not : Bazen, kendi ürünlerine bağlantılar içeren soruları yanıtlamanın kendimi tanıtıcı ve tercih edilemez olduğunu biliyorum, bu yüzden bu soruya cevap vermekten kaçınıyorum. Bununla birlikte, başka hiçbir çözüm uzun zamandır ortaya çıkmamıştır ve bu sorunun da (önemli talebini yansıtan) birçok görüşü vardır. Bu yüzden bugün bu soruya cevap vermeye karar verdim. Aşağıdaki meta soruları / cevapları dikkate alarak ilk önce fikri açıkladım ve daha sonra projeme örnek bir uygulama olarak bir link verdim.

Evet, bunun aslında kendini tanıtıcı olduğunu itiraf etmeliyim , ancak bunun özelliği isteyenlere yardımcı olduğuna inanıyorum. Eğer sorun varsa, bana yorum yaparak söylerseniz memnun olurum.


-1

Ben dizim kabuk düzeyinde ama arayüz seviyesinde (sadece Bence -ve gerçekleşmesini gerektiğini düşünüyorum daha dont başkası oluyor ben örneğin, Terminal veya favori konsolu için "eklentiler" içine bakmak diye, bu seems-) bu eklenti için de Kate yardımcı olabilir, ya da nano'da sözdizimi vurgulaması yapan bir başkası

İşte Terminalinde vurgulayarak sözdizimi hakkında daha da konuşmak:

Alias ​​ls = 'ls -G' değerini .bash_profile dosyasına ekleyin.

burada daha iyi olmasına rağmen nasıl yapılacağını açıkladı

Umarım yardımcı olur


11
Görünüşe göre, kabukta değil editörlerde vurgulayan sözdizimini nasıl ayarlayacağınızı yanıtlıyorsunuz. Ls-colorization bile “sözdizimi” vurgulaması değildir.
Kyle Strand

Sanırım çözümden daha çok anlambilim üzerine odaklanıyorsunuz, linklerden gelen kod ve önerilen çözümle, bash renk elde ediyorum, ki OP'nin bilmek istediğine inanıyorum
Purefan

10
Asıl soru aslında açıkça, sözdizimi vurgulamasıyla ilgili oldukça açık. Bu, hem balık kabuğunun ekran görüntüsünde hem de son cümleyle gösterilir: "Terminalde girilen asıl metni vurgulamak istiyorum. Komutlar, parantezler, alıntılar, vb."
Kyle Strand

9
Dediğim gibi, vurgulama "sözdizimi" değil. Bunlar, lskomutun çıktısını, kabuk sözdizimi ile ilgisi olmayan dosya türüne göre vurgulamaktadır .
Kyle Strand

2
Zsh ( github.com/zsh-users/zsh-syntax-highlighting ) ve Fish'in ( fishshell.com/docs/current/tutorial.html ) her ikisinin de sözdizimi vurgulaması var, bu soru açıkça bash için benzer bir özellik hakkında soruyor. Özellikle diğer kabuklarda zaten var olduğunda “uygulanması ve tutarlı tutulması zor” bir özellik istemek tamamen geçerli bir istektir
Brandon
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.