Vim ekran tamponu bıraktıktan sonra önceki bash etkinliği ile nasıl değiştirilir?


14

Bir bash (veya vim) özelliğinin ne olduğunu bulmaya çalışıyorum. İşte senaryo. Bir bash terminalindeyim, sonra vim ile bir şeyler düzenleyin, sonra bash'a geri dönün. Bazı terminallerde, vim oturumu ekranı önceki bash kabuk etkinliğini göstermek için kaybolur (istediğim budur?).

Diğerlerinde, vim oturumu ekran tamponu kalır (eski bash kabuk aktivitesini gizler). Ekranı temizlemem veya bash etkinliğimin bu vim oturum arabelleğini ekrandan dışarı çıkmasını beklemem gerekecek.

Vim oturum arabelleğini önceki bash etkinliğiyle değiştirmek için bu davranışı nasıl denetleyebilirim?

Teşekkürler Tim


Yanıtlar:


10

Vim gönderir t_tive t_ksterminali için bir oturum başladı bu t_teve t_kene zaman biter. t_tiVe t_teuç neden sekansları da alternatif ekrana geçmek için.

Senin içinde ~/.vimrcdosyanın yapabilirsiniz vimbu satır ekleyerek çıktığında ekranda belgeyi bırakın:

set t_ti=""

buna benzer bir satırınız varsa, kaldırdığınızda, çıkarken önceki terminal içeriğinin görünmesi gerekir vim.


4

Bu sorunun bir nedeni programı kullanıyor olabilir screen. Bir screenoturumda olduğumda vim terminal durumunu geri getiremediğimi görüyorum .

Ubuntu 15.10'da ekrana veya ekran / vim kombinasyonuna özel olduğundan emin değilim. Yukarıda açıklananla aynı neden, sanırım screenfarklı bir termcap var.


2
altscreen on~ / .Screenrc dosyasına eklemek ekran sorununu çözer.
BartBiczBoży

3

~/.bash_profileTERM'yi her giriş yaptığınızda xterm olarak dışa aktarmak için dosyanıza bir satır eklemeniz yeterlidir . Aşağıdaki gibi yapın;

echo "TERM=xterm; export TERM" >> ~/.bash_profile

Şimdi bir dahaki girişinizde probleminiz düzeltilecek ve tekrar giriş yapmak istemiyorsanız aşağıdakilerden birini yapabilirsiniz ...

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile

1
öyle olmaz export $TERMmı?
chrsblck

1
@chrsblck: Hayır, çünkü exportadı (örneğin TERMbu örnekte) yerel değişken yerine ortam değişkeni olarak dışa aktarır . export $TERMBu örnekte kullandıysanız , $TERMvar çözümlemesi , muhtemelen tanımlanmamış olan xtermenv var $xtermdeğerini ayarlar . İyi soru olsa da, her zaman benim için de yanlış görünüyor.
ekerner

2

Tim. Yukarıdaki cevapların her ikisi de doğrudur. Vim, $ TERM için termcap girdisinde tanımlanmışsa, terminali "alternatif ekrana" geçirir.

"Bazı terminallerde (... doğru çalışıyor ...)" ve "diğerlerinde (... yanlış çalışıyor ...)"

Tüm bu terminaller için aynı terminal emülatörünü çalıştırıyor musunuz?

Örneğin, ev linux kutumda, gnome terminali, xterm, Konsole, yakuake ve ctrl-alt-F1 ile ilişkili "sanal terminaller" ile birlikte unuttuğum birkaç tane daha var ... ctrl-alt-F6 ya da öylesine. Bunların çoğu, "linux" adlı bir terminal tanımlaması olan sanal terminaller dışında, "xterm" için "standart" termcap girdisiyle çalışabilir.

Neyin farklı olduğunu görmek için terminal öykünücüsünün kendisini ve çalışan terminallerdeki ve çalışmayan terminallerdeki $ TERM değerini kontrol edin. Ayrıca, bazen farklı bir kullanıcı olarak oturum açtıysanız, sorunun merkezinde olabilir - her kullanıcının kendi .bashrc'si olduğundan çeşitli ayarlar kullanıcıdan kullanıcıya farklılık gösterebilir.

Umarım yardımcı olur!
-pbr


1

Bu, terminaliniz ve terminal bilgisiyle ilgili makinenizin ayarları ile ilgilidir. Taşınabilir çözümlerden biri GNU Screen kullanmaktır. Vim için bir pencere ve Bash için başka bir pencere açın, böylece iki oturumu ayırın. X11'de xterm, Gnome'da Gnome Terminali veya OS X'te Terminal.app gibi bir grafik terminal kullanıyorsanız, aynı etkiyi elde etmek için yeni bir pencere veya sekme açabilirsiniz.

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.