Bagaimana mengatur tampilan bash agar tidak menampilkan teks vim setelah keluar?

28

Pertanyaan saya sederhana, tetapi saya merasa sulit untuk membingkai / menjelaskannya dengan mudah.

Saya masuk ke beberapa kotak Unix dengan akun yang berbeda. Saya melihat 2 hal berbeda untuk user1dan user2, saat mengedit file teks dalam vim

pengguna1

Saat saya mengetik vim filename, vim terbuka dan saya mengedit file. Ketika saya menutupnya, teks lengkap dari file hilang, dan saya melihat perintah / output Teminal yang sebelumnya ada.

pengguna2

Saat saya mengetik vim filename, vim terbuka dan saya mengedit file. Ketika saya menutupnya, bagian dari file yang ada di layar ketika saya vimmasih di layar, dan semua tampilan Terminal sebelumnya digulir ke atas. Bahkan jika file itu hanya 1 baris, setelah keluar dari vim, layar menunjukkan baris pertama, dengan semua sisanya ~dan saya melihat command prompt di bagian bawah layar.

Detail

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)

Saya membandingkan vimrcfile untuk kedua pengguna, dan saya mengetahui semua pengaturan, dan tidak menemukan pengaturan / konfigurasi yang terkait dengan perilaku ini.

Apakah perilaku ini terkait dengan konfigurasi shell? Bagaimana cara mengatur hal-hal, sehingga saya mendapatkan perilaku seperti yang ditunjukkan dalam user1skenario?

Saya tidak dapat menggambarkan ini dengan mudah, juga merasa sulit untuk google, karena saya tidak tahu kata kunci apa yang harus dicari untuk perilaku tersebut. Beritahu saya, Jika saya harus menjelaskan lebih lanjut.

mtk
sumber
Apakah user1dan user2akun di mesin yang sama atau berbeda?
jasonwryan
@jasonwryan Logging di mesin yang sama juga menunjukkan skenario yang sama. @ warl0ck Terima kasih untuk itu.
mtk
1
Jika Anda ingin memaksakan perilaku ini tetapi tetap menggunakan tipe terminal Anda, tambahkan baris ke .bashrc atau .profile Anda dengan kata lain vi = "/ usr / bin / vi $ *; clear"
Criggie

Jawaban:

24

Salah satu alasan untuk perilaku itu adalah pengaturan terminal untuk setiap pengguna.

Sebagai contoh:

  • User1 menggunakan TERM = xterm , dalam hal ini ketika Anda keluar dari vim itu akan menghapus terminal.
  • User2 menggunakan TERM = vt100 , dalam hal ini ketika Anda keluar dari vim itu tidak akan menghapus terminal.

Periksa terminal apa yang digunakan pengguna1 echo $TERMdan atur hal yang sama untuk pengguna2. untuk bash:

JANGKA = xterm; JANGKA ekspor

BitsOfNix
sumber
+1 Solusi tepat / sempurna. Terima kasih !!! Tidak mengira itu semudah itu. Bisakah Anda jelaskan apa TERMitu? atau arahkan ke beberapa tautan sumber daya? Saya perlu memahami ini. Apakah ini hanya memengaruhi ketika kita terhubung melalui putty?
mtk
Anda dapat menentukan pengaturan terminal ke dalam sesi dempul, tetapi pengguna dapat menentukannya pada variabel lingkungan mereka. JANGKA akan menentukan jenis terminal Anda dan juga beberapa akan memiliki lebih banyak fitur yang lain, misalnya, xterm mendukung warna dan itu akan memperbarui baris dan kolom secara otomatis. Jika Anda menggunakan vt100, itu akan secara default menjadi 24 baris dengan 80 kolom ketika Anda mengubah ukuran terminal Anda, Anda akan melihat bahwa itu tetap ke 24x80. Lihat unix.stackexchange.com/questions/43945/… , mungkin ini menjelaskan lebih baik daripada saya.
BitsOfNix
Ini perilaku terminal, bukan shell. Pengaturan terminal emulator adalah alat apa pun yang Anda gunakan untuk menghubungkan. Perbedaannya dijelaskan secara rinci di sini: unix.stackexchange.com/questions/4126/…
Leonid
@Leonid, tidak persis, jika Anda menggunakan dempul Anda dapat menentukan dan itu akan diperbarui saat menghubungkan jika pengguna tidak menentukan JANGKA. Jika pengguna telah menetapkannya maka Anda benar, tidak peduli alat apa yang akan menang pengaturan pada lingkungan pengguna.
BitsOfNix
Sekedar catatan tentang solusi ini: YMMV. Tidak selalu "xterm". Menggunakan dwm (Dynamic Window Manager) dengan dmenu di FreeBSD 10 Saya harus memalsukan terminal dengan menggunakan "rxvt" untuk mendapatkan skenario 1. Anda juga dapat melewati pengaturan istilah dengan menambahkan "set term = rxvt" ke file ~ / .vimrc Anda .
Ryder
18

Perilaku seperti itu adalah satu-satunya hal yang menjauhkan saya dari penggunaan screen. Menggunakan terminal "layar" dan mengubahnya menjadi "xterm" tidak membantu.

Menambahkan altscreen onopsi di ~ / .screenrc menyelesaikannya. Dari manual layar:

altscreen on|off

If set to on, "alternate screen" support is enabled in virtual terminals, just like in xterm.  Initial setting is `off'.
BartBiczBoży
sumber
@Fox OP tidak menyebutkan apapun tentang TERM yang dia gunakan, jadi ini bisa menjadi jawaban alternatif. Pokoknya halaman ini ada di bagian paling atas saat googling untuk masalah layar juga.
BartBiczBoży
2
Ini berhasil! Kata kunci: "vim stops meninggalkan terminal artefak visual"
Jay Taylor
0

Saya sudah mencoba semua opsi ini tetapi hasilnya bukan yang saya harapkan. !clearakan menghapus seluruh layar dan tidak meninggalkan perintah bash sebelumnya.

Solusi sederhana dan benar adalah mengatur string tipe terminal ke xtermdan kecepatan terminal ke 38400,38400bawah Rincian terminal dalam pengaturan dempul di bawah Koneksi-> Data.

Simpan pengaturan dan Anda siap melakukannya.

Vinaya Rajanna
sumber