Bagaimana saya masih bisa melihat teks 'man' setelah saya berhenti man?

16

Saya biasanya menggunakan tcsh atau bash dan sering ingin menggunakan 'man' untuk meninjau opsi-opsi perintah. Saat ini ketika saya berhenti man atau ctrl-C, teks man menghilang dan saya melihat buffer scrollback yang ada di sana sebelum saya melakukan perintah 'man'. Saya ingin tetap melihat teks 'man' yang saya lihat sebagai referensi sementara saya mengetik perintah di command prompt tanpa membuka jendela kedua, bagaimana saya bisa melakukan itu?

Sol
sumber

Jawaban:

17

Perilaku ini berasal dari fitur "layar alternatif" yang termasuk dalam beberapa terminal (perangkat keras) dan sebagian besar emulator terminal (perangkat lunak). Apa yang terjadi adalah bahwa beberapa program terminal sadar beralih ke 'layar' alternatif untuk melakukan pekerjaan mereka dan beralih kembali ke 'layar' normal ketika mereka diberhentikan (keluar, ditangguhkan, dll.). Ini secara efektif membersihkan hasil akhir dari program tersebut.

Pencarian web untuk "terminfo mencegah altscreen" menyediakan halaman yang membahas 'masalah' layar alternatif dan beberapa solusi .

Seperti yang dijelaskan oleh halaman tertaut itu, beberapa program dapat dikonfigurasi untuk menghindari penggunaan layar alternatif. The -Xpilihan untuk kurang adalah cara tidak langsung untuk melakukan hal ini. Vim dapat dikonfigurasi dengan cara yang sama dengan membatalkan t_tidan t_tevariabel.


Solusi dengan cakupan yang lebih luas adalah mengedit entri terminfo untuk terminal Anda sehingga tidak menyertakan urutan kontrol layar alternatif. Entri terminfo membentuk database yang memberi tahu program yang mengontrol urutan untuk dikirim ke terminal untuk membuat efek tertentu (memindahkan kursor, membersihkan layar, menghapus bagian dari baris saat ini, dll.). Dengan mengedit entri terminfo yang digunakan terminal Anda, Anda dapat mengatur untuk 'lalai memberi tahu' semua program penggunaan terminfo bahwa sekuens kontrol "layar alternatif" bahkan ada.

Dari daftar urutan kontrol untuk xterm , kita dapat melihat bahwa urutan kontrol yang menarik (untuk emulator terminal mirip- xterm ) adalah

  • aktifkan layar alternatif: ESC [ ? 47 h(juga untuk 1047 dan 1049), dan
  • pulihkan layar normal: ESC [ ? 47 l(demikian juga untuk 1047 dan 1049).

Kode-kode ini kemungkinan besar hadir dalam variabel terminfo smcupdan rmcup. Cara cepat dan kotor untuk mengeluarkan variabel-variabel ini untuk TERM Anda saat ini mungkin terlihat seperti ini:

infocmp | sed -e 's/[sr]mcup=[^,]*,//' > /tmp/noaltscreen-terminfo
tic -o ~/.terminfo/ /tmp/noaltscreen-terminfo

Metode ini cukup kasar dan tentu saja tidak akan berfungsi untuk semua terminal, tetapi mungkin akan bekerja untuk sebagian besar emulator terminal mirip xterm . Idealnya Anda harus menyelidiki nilai-nilai dalam smcupdan rmcupvariabel entri terminfo untuk terminal Anda dan mengeditnya secara konservatif untuk mencegah perilaku yang tidak diinginkan. Halaman diskusi / solusi yang ditautkan di atas memiliki file terminfo "pra-masak" yang mungkin Anda gunakan alih-alih meretas sendiri (tapi apa asyiknya itu?).

Chris Johnsen
sumber
10

Anda perlu mengatur $MANPAGERuntuk /usr/bin/less -isXmenggantikan jalur mana lessditemukan seperti yang diperlukan. Bagian yang penting adalah -X; yang -isadalah set standar berlalu kurang.

Ignacio Vazquez-Abrams
sumber
9

Dengan asumsi pager Anda less, atur variabel lingkungan LESSuntuk memasukkan "X". Misalnya milik saya adalah:

LESS="-iMFXRj4a"

Anda dapat mengatur ini di ~/.bashrcfile Anda

export LESS="-X"

dan sertakan opsi lain yang Anda miliki atau tambahkan yang Anda suka.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
4

Trik lain - kurang elegan dari jawaban lainnya - adalah:

man what | more

(Setidaknya, ini berfungsi pada MacOS X, yang biasanya cukup serupa untuk valid.)

Jonathan Leffler
sumber
1

manusia apa | lebih

Ini berfungsi dengan baik (Fedora).

Sumanta
sumber