Bagaimana cara mengganti buffer layar vim dengan aktivitas bash sebelumnya setelah berhenti?


14

Saya mencoba mencari tahu apa fitur bash (atau vim). Inilah skenarionya. Saya di terminal bash, lalu edit sesuatu dengan vim, lalu keluar kembali ke bash. Di beberapa terminal, layar sesi vim menghilang untuk menampilkan aktivitas bash shell sebelumnya (ini yang saya inginkan?).

Di tempat lain, buffer layar sesi vim tetap (menyembunyikan aktivitas bash shell lama). Saya harus menghapus layar, atau menunggu sampai aktivitas bash saya mendorong buffer sesi vim keluar dari layar.

Bagaimana saya bisa mengontrol perilaku ini untuk menggantikan buffer sesi vim dengan aktivitas bash sebelumnya?

Terima kasih Tim


Jawaban:


10

Vim mengirim t_tidan t_kske terminal ketika sesi dimulai dan t_tedan t_keketika itu berakhir. The t_tidan t_teurutan penyebab terminal untuk beralih ke layar alternatif nya.

Dalam ~/.vimrcfile Anda, Anda dapat vimmeninggalkan dokumen di layar saat keluar dengan memasukkan baris ini:

set t_ti=""

jika Anda memiliki garis yang serupa dengan itu, menghapusnya akan membuat konten terminal sebelumnya muncul ketika Anda keluar vim.


4

Penyebab masalah ini dapat menggunakan program screen. Saya menemukan bahwa ketika saya dalam screensesi vim tidak dapat mengembalikan status terminal.

Tidak yakin apakah ini khusus untuk layar atau ke combo layar / vim di Ubuntu 15.10. Penyebab yang sama seperti yang dijelaskan di atas, saya kira screenmemiliki termcap berbeda.


2
Menambahkan altscreen onfile ~ / .screenrc memecahkan masalah untuk layar.
BartBiczBoży

3

Cukup tambahkan baris ke ~/.bash_profilefile Anda untuk mengekspor TERM sebagai xterm setiap kali Anda masuk. Lakukan sebagai berikut;

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

Sekarang lain kali Anda masuk masalah Anda akan diperbaiki, dan jika Anda tidak ingin masuk kembali Anda dapat melakukan salah satu ...

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

1
bukankah begitu export $TERM?
chrsblck

1
@ chrsblck: Tidak, karena exportmengekspor nama (misalnya TERMdalam kasus ini) sebagai variabel lingkungan daripada variabel lokal. Jika Anda menggunakan export $TERMdalam contoh ini maka $TERMvar akan memutuskan untuk xtermAnda akan mengatur env var $xterm, yang mungkin tidak didefinisikan. Pertanyaan yang bagus, selalu terlihat salah bagi saya juga.
ekerner

2

Tim Kedua jawaban di atas benar. Vim mengalihkan terminal ke "layar alternatif" jika kemampuan untuk melakukan itu didefinisikan dalam entri termcap untuk $ TERM.

Anda mengatakan "di beberapa terminal (... berfungsi dengan benar ...)" dan "di yang lain (... berfungsi dengan salah ...)"

Apakah Anda menjalankan emulator terminal yang sama persis untuk semua terminal itu?

Sebagai contoh, pada kotak linux rumah saya, saya memiliki gnome-terminal, xterm, Konsole, yakuake, dan mungkin beberapa lagi saya sudah lupa, bersama dengan "terminal virtual" yang terkait dengan ctrl-alt-F1 ... ctrl-alt-F6 atau lebih. Sebagian besar ini dapat bekerja dengan entri termcap "standar" untuk "xterm" - kecuali terminal virtual yang memiliki definisi terminal bernama "linux".

Periksa emulator terminal itu sendiri dan nilai $ TERM pada terminal yang berfungsi dan yang tidak, untuk melihat apa yang berbeda. Juga, jika Anda masuk sebagai pengguna yang berbeda kadang-kadang, itu bisa menjadi inti masalah - karena setiap pengguna memiliki .bashrc berbagai pengaturan dapat berbeda dari pengguna ke pengguna.

Semoga itu bisa membantu!
-pbr


1

Ini ada hubungannya dengan terminal Anda dan pengaturan mesin Anda berurusan dengan info terminal. Salah satu solusi portabel adalah menggunakan Layar GNU. Buka satu jendela untuk Vim dan yang lainnya untuk Bash, sehingga memisahkan kedua sesi. Jika Anda menggunakan terminal grafis seperti xterm pada X11, Gnome Terminal pada Gnome atau Terminal.app pada OS X maka Anda dapat membuka jendela atau tab baru untuk mendapatkan efek yang sama.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.