Apakah ada cara untuk membuat less
program mengulangi baris pertama (atau 2 baris pertama) pada setiap halaman yang ditampilkan?
Apakah ada program pager lain yang bisa melakukan ini?
Ini akan menjadi aplikasi pembunuh untuk meramban tabel database, berpikir mysql
atau psql
atau gqlplus
...
Bagi Anda yang tidak mendapatkan ide, lihat tangkapan layar di bagian bawah halaman ini . Saya ingin mengulangi baris tajuk + bilah ascii horizontal.
command-line
less
pager
filiprem
sumber
sumber
Jawaban:
Ada solusi menggunakan Vim.
Pertama, kita membutuhkan makro Vim, yang akan melakukan sebagian besar pekerjaan, saya simpan di
~/.vim/plugin/less.vim
:Kedua, untuk meniru pager, saya perlu memanggil vim agar:
Saya menyatukan ini sebagai skrip pembantu di
~/bin/vimpager
:Ketiga, saya perlu mengganti variabel lingkungan $ PAGER, tetapi hanya untuk psql (tambahkan ini ke saya
~/.bash_aliases
):sumber
Sudahkah Anda mencoba Mode SQL di Emacs / XEmacs?
Ini tentu tidak sesederhana untuk digunakan sebagai
more
atauless
, tetapi ia melakukan apa yang Anda minta, meninggalkan baris header sambil menggulir hasil secara vertikal dan horizontal.sumber
Ini meminjam sangat banyak dari jawaban yang diterima, tetapi menambahkan ...
NULL
Benar / Salah (dan T / F, Y / T, Ya / Tidak)Beberapa bagian mungkin harus diubah untuk keluaran spesifik Anda, karena saya tidak menggunakannya
psql
. Saya juga memiliki fungsi pembantu yang sedikit berbeda untuk tujuan saya, tetapi mereka serupa dengan yang ada di jawaban yang diterima.Input sampel
Kode
sumber
Anda dapat menggunakan beberapa 'wilayah' di
screen
:Maka Anda hanya perlu mengatur variabel lingkungan $ FILE:
sumber
fit
perintah layar). Saya berpikir bahwa Anda tidak ingin bagian atas untuk menggulir. Ketika saya mengujinya sendiri, kedua jendela gulir seperti seharusnya. Bagian atas menggulir dua baris (1-2, 3-4, 5-6, dll.) Dan bagian bawah gulungan sesuai kebutuhan. Apa perilaku yang Anda lihat /Anda dapat menambahkan nomor sebelum 'maju' dan itu akan menggulirkan garis N, bukan panjang penuh. Jadi jika jendela terminal Anda adalah 40 baris, ketik
38f
untuk mulai menggulir hanya 38 baris, meninggalkan 2 baris terakhir dari 'halaman' terakhir. Dari halaman manual:sumber
screen
atautmux
untuk membuat dua panel, ubah ukuran dari satu menjadi dua baris (resize 2
) dan kemudian jalankanless
, di panel kedua, jalankan secaraless
normal. Anda dapat mengatur ini sebagai skrip dengan file .screenrc tertentu. Lihat jawaban alternatif.