Terminal ekranımda neden parantez içindeki macun modu düzensiz olarak etkinleştirilmiş?


23

Ubuntu 14.04 kullanıyorum ve terminal ekranımda beni rahatsız eden çok garip bir sorun var. Birisi bana yardımcı olabilir ya da yanlış ya da linux olmayan bir şey yapıyorsam bana açıklayabilir mi? Bir tür çözümüm var ama bunun neden tekrar tekrar olduğunu anlamak istiyorum.

Sıkça bash komutlarını notlarımdan veya İnternetten kopyalarım ve bazen kopyaladığım şeyleri saran garip 0 ~ ve 1 ~ semboller alırım. Çok can sıkıcı ve bu tamamen rastgele bir şekilde oluyor.

Uzun bir aramadan sonra bu şeye bracked paste modu dendiğini öğrendim, bu yüzden printf "\e[?2004l"aniden etkinleştirilmişse terminalimi düzeltmek için bu komutu kullanıyorum .

Bu özelliği bir şekilde kalıcı olarak devre dışı bırakmak mümkün müdür? Şimdi çalıştığım tüm Ubuntu makinelerinde bununla karşılaştım. Daha önce Ubuntu 10.10 ve 12.04 kullanıyordum ve daha önce hiç böyle bir sorun yaşamadım.

Yanıtlar:


11

Parantezli yapıştırma modunu devre dışı bırakabilirsiniz.

Geçici olarak denemek için, bash'ta:

bind 'set enable-bracketed-paste off'

Daha sonra, nasıl davrandığını seviyorsanız, ayarı kendinize ~/.inputrcveya sistem genelinde /etc/inputrc(ya da Ubuntu’da olduğu yere) koyabilirsiniz .


4
Tüm bunlar benim için yapıyor gibi görünüyor, bu yüzden "p" harfini yazamıyorum (ve sadece küçük harf "p"), ya da hiç yapıştıramıyorum ve başka hiçbir şey
yapamıyorum

@BrianLeishman Tuhaf bir şekilde bindtanımadığı argümanları ayrıştırırsa, bu komutu 7. sürümden önce Readline veya 4.4'ten önce Bash komutunu kullanarak çalıştırırsanız ne olur. Bu cevap, bir sonraki Ubuntu (17.04) sürümüne kadar faydalı bir şey yapmaz.
Anthony G - Monica için adalet

printfSkinTenimde koyduğunuzda yaklaşım çalışır, ama değil çalışır .bashrcve özellik nasılsa periyodik geri kendini kapatır. bindYaklaşım benim klavyeyi (kırar panahtar does not iş , and putting that line in my ~ / .inputrc` eserler 10 saniye ve daha sonra konsol başlar dışarı barfing için -enaset-enaset-...10 saniye sonra sonsuza dek. Sonunda sadece elle aptal düzeltmek için kaynağından bash 4.4 yükseltilmiş problem
Cloud

1
Doğru komut bind 'set enable-bracketed-paste off'(ilk `-`` yerine bir boşlukla. Sadece bir karakterin düzeltilmesi mümkün gözükmüyor.
Arrow

7

Bu komutu kendi içine koyabilirsin bashrc. Ardından terminalinizi her açtığınızda uygulanır.

Sadece sonuna yazın vi ~/.bashrcve ekleyin printf "\e[?2004l"ve dosyayı kaydedin.:wq


Evet, ilk başta bunu yaptım :) sonra sadece bu modu @jwd'nin önerdiği gibi devre dışı bıraktım.
artemdevel 6:17

1
echo 'printf "\e[?2004l"' >> ~/.bashrcaynı şeyi tek bir satırda yapar ve bunu doğrulayabilirsiniz tail -n1 ~/.bashrc. Kullanmaya gerek yok vi.
pzkpfw

6

Bunun neden olduğu konusundaki asıl sorunuzu yanıtlamak için , işte olası bir senaryo:

  • Ev bilgisayarımda parantez içindeki macunu destekleyen yeni bir zsh sürümü vardı (hadi buna kabuk A diyelim)
  • Parantezli macunu (kabuk B) desteklemeyen kabuğumun bash'ın eski bir sürümüne ayarlandığı bir bilgisayara girdim

Sorun şu ki, terminal programım hala kabuk A'dan kabuk B'ye ssh yaparken parantezli macunun etkin olduğunu düşünüyor, bu yüzden yapıştırılan içeriğinizin etrafına karakter eklemeye devam ediyor (0 ~ ve 1 ~ bit). Shell B onları desteklemiyor, bu yüzden sadece değişmeden geçiyor. Terminalinize, kabuğunuzun özel bir kaçış dizisi yazdırmasını sağlayarak parantez içindeki macunu kapatmasını söylemelisiniz - ne printf "\e[?2004l"olur.

Sorunu çözmenin birkaç yolu vardır:

  1. Parantezli macunu hiç umursamıyorsanız, kabuk A'yı kapatın, böylece ilk etapta asla etkin olmaz (@ jwd's answer)

  2. Kabuk A'da .bashrcbraketli macun kullanmaya devam etmek, ancak Kabuk B'yi devre dışı bırakmak istiyorsanız, kaçış sırasını (@ MOHRE'nin cevabına) ekleyin.

  3. Braketi güçlendirilmiş pastayı desteklemek için kabuk B'yi yükseltin, böylece 0 ~ ve 1 ~ karakterlerini doğru şekilde yorumlar.

Yan not: GNU ekranını kullanıyorsanız, bu printfkomutu ekranın dışında çalıştırmanız gerekir . İçerideyken işe görünmüyor.


Thanks @ rjh :) Ama daha önce zsh kullanmadım ya da ssh ile ilgili bir sorunum olmadı. Bir şey sadece Ubuntu'da yıllar önce yanlış yapılandırılmış gibi görünüyor.
artemdevel
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.