vi / vim gerakan penyangga abrumpt di dalam jendela

11

Saat menggunakan :set wrapdalam vi / vim, isi dari seluruh baris yang dibungkus ditempatkan di buffer tampilan saat memindahkan kursor ke baris baru, bahkan ketika menavigasi melalui file dengan baris tampilan (gj / gk) sebagai lawan dari garis nyata (j / k). Misalnya, jika sebuah garis terbungkus lebih dari 5 garis layar dan saat ini berada di luar buffer layar, buffer tersebut akan melonjak sebanyak 5 baris ketika menavigasi ke dalam garis ini untuk memaksa seluruh garis agar masuk ke dalam layar. Apakah ada cara untuk menonaktifkan perilaku ini? Catatan yang set display+=lastlineakan memungkinkan tampilan garis parsial ketika garis terbungkus dipaksa keluar dari layar dengan menavigasi menjauh dari garis, tetapi ini tidak menyelesaikan lompatan buffer yang terjadi ketika menavigasi ke garis yang awalnya di luar buffer.

Klarifikasi: Jika uraian di atas samar-samar, intinya adalah bahwa saya ingin dapat menggulir dengan lancar di vim dengan pembungkus garis diaktifkan sehingga garis-garis akan ditampilkan sebagian dari layar daripada wajib ditampilkan secara keseluruhan.

user001
sumber
1
Bisakah Anda mengonfirmasi bahwa yang Anda maksud adalah: Anda ingin bagian dari garis yang dibungkus tidak ditampilkan dan dapat menggulir dengan lancar? Vim menunjukkan garis sepenuhnya ketika 'wrap'ada di Aku takut
Benoit
Tepat. Saya menganggap tidak ada cara untuk mengesampingkan perilaku ini menunjukkan garis yang dibungkus secara keseluruhan saat menggulir? Terima kasih.
user001
1
Bukannya aku tahu. Tapi tunggu jawaban, tidak ada yang tahu apa yang bisa dilakukan Vim.
Benoit
1
setuju dengan @Benoit. Tidak mungkin sejauh yang saya tahu.
Fredrik Pihl
1
Saat ini ada diskusi di milis vim_dev tentang topik ini. Tampaknya Anda bukan satu-satunya dengan permintaan ini.
Randy Morris

Jawaban:

1

Bukan jawaban yang lengkap, tapi mungkin petunjuk. Ada scrollpilihan. Bantuan untuk opsi itu berbunyi, antara lain:

{Vi sedikit berbeda: 'gulir' memberikan jumlah baris layar, bukan baris file, membuat perbedaan ketika garis membungkus}

thebodzio
sumber
Terima kasih, itu sangat membantu. Kombinasi tombol <Ctrl-E> (bawah) dan <Ctrl-Y> (atas) memberikan perilaku dasar yang saya inginkan. Jika ada cara untuk mendeteksi apakah kursor berada di garis atas atau bawah dari jendela, maka solusi sementara akan melibatkan pemetaan secara kondisional tombol panah naik dan turun ke <Ctrl-Y> gk dan <Ctrl-E> gj, masing-masing. Ketika kursor tidak berada di garis atas atau bawah jendela, maka pemetaan mereka untuk gk dan gj diperlukan (pernyataan lain dalam kondisi). Apakah ada cara sederhana untuk mendeteksi apakah kursor berada di garis atas atau bawah dari jendela saat ini?
user001
0

dalam mode normal, Anda dapat melompat di antara bagian yang ditampilkan dari garis yang dibungkus dengan menggunakan gkdan gj( g<up>atau g<down>). Vik wikipage ini menjelaskan cara mengubah perilaku secara permanen.

jpjacobs
sumber
1
Tentu saja, dan saya telah memetakan perilaku itu ke tombol panah arah. Namun, ini berbeda dari tampilan wajib dari keseluruhan garis yang dibungkus saat menavigasi ke garis itu. Perilaku ini tidak tergantung pada penggunaan gj / gk atau j / k. Saya ingin dapat menavigasi sebagian ke garis yang awalnya keluar dari buffer (dari layar) tanpa seluruh garis yang dibungkus ditampilkan.
user001
Oke, kalau begitu saya salah paham. Yah, saya kira kalimat Anda dibungkus, atau tidak. Apa yang Anda inginkan adalah sesuatu di antaranya, tetapi saya pikir itu tidak mungkin.
jpjacobs