Setiap kali saya menjalankan clear di terminal saya, itu menghapus buffer scrollback dari atas layar ke baris saat ini. Saya telah mencobanya di xterm, st, dan urxvt, dan masalahnya tetap ada. Apakah ada cara saya dapat mengubah perilaku clear sehingga tidak menyentuh buffer scrollback?
Jawaban yang Diterima:
Komentar "dari atas layar ke baris saat ini" tidak jelas. Jika yang Anda maksud dari atas bagian yang terlihat layar, itu bukan scrollback . Scrollback terminal adalah bagian yang hanya dapat Anda lihat dengan menggunakan scrollbar (atau tombol yang sesuai seperti shift pageup).
Urutan Kontrol XTerm mendokumentasikan urutan pelarian yang relevan:
CSI Ps J Erase in Display (ED).
Ps = 0 -> Erase Below (default).
Ps = 1 -> Erase Above.
Ps = 2 -> Erase All.
Ps = 3 -> Erase Saved Lines (xterm).
Kemampuan deskripsi terminal clear
menggunakan yang berikutnya-ke-terakhir, mis.,
clear=E[HE[2J
untuk memposisikan kursor ke kiri atas dan kemudian menghapus seluruh layar (terlihat). Anda bisa gunakan Hapus Di Bawah , tapi itu tidak digunakan dalam deskripsi terminal.
Mengacu pada menghapus scrollback :Itu adalah fitur khusus terminal, awalnya merupakan escape sequence di xterm (1999, didokumentasikan di ctlseqs.ms tetapi tidak disebutkan dalam perubahan) dan kemudian (2011) diimplementasikan sebagai ekstensi untuk konsol Linux dan deskripsi terminal yang sesuai. Basis data terminal mencantumkannya sebagai “ekstensi lain-lain”.
Saat ini, deskripsi terminal ini memiliki fitur:
- linux3.0 (default saat ini untuk “linux”)
- dempul
- xterm+basic (bahan penyusun yang digunakan di sebagian besar varian "xterm")
Apakah itu didukung di xterm mirip seperti VTE harus dijawab dengan pengujian (tidak ada dokumentasi yang berguna untuk VTE atau Konsole).
Jika Anda memilih untuk tidak menggunakan ekstensi, Anda dapat menghapus E3
kemampuan dari deskripsi terminal yang Anda gunakan, mis.,
infocmp -1x >foo
edit foo, removing the line with "E3="
tic -x foo
Saya menyarankan menggunakan opsi -1
dan -x
untuk menyederhanakan pemformatan dan untuk menunjukkan fitur yang akan diubah. Contoh yang diberikan di https://ghostbin.com/paste/kfsbj konsisten dengan saran itu:
- nama path
/home/flowerpick/.terminfo/x/xterm
akan digunakan oleh ncurses - kemampuan
AX
danXT
adalah kemampuan yang diperluas (sepertiE3
), ditunjukkan dengan-x
pilihan.
Jika Anda menggunakan lebih dari satu jenis terminal, Anda harus melakukan ini untuk masing-masing (nilai $TERM
), dan perubahan hanya berlaku untuk mesin tempat Anda menjalankan clear
. Beberapa baris pertama dari infocmp
output menunjukkan mana yang sedang Anda kerjakan:
# Reconstructed via infocmp from file: /home/flowerpick/.terminfo/x/xterm
xterm|xterm terminal emulator (X Window System),
Misalnya, uxrvt
set $TERM
untuk sesuatu seperti rxvt-unicode
, menghasilkan baris seperti ini di infocmp
:
# Reconstructed via infocmp from file: /lib/terminfo/r/rxvt-unicode
rxvt-unicode|rxvt-unicode terminal (X Window System),
st
program menggunakan xterm
(atau mungkin xterm-256color
), meskipun sudah lama sejak saya melihat salinan itu yang bekerja cukup baik untuk dikomentari.
Omong-omong, Anda bisa memiliki alias untuk clear
yang mengirimkan urutan pelarian yang diberikan (mengabaikan deskripsi terminal), tetapi saya belum melihat ini dilaporkan oleh siapa pun.
Jika Anda ingin "menghapus di atas", itu tidak semudah mengetik "jelas". Pelarian