Saya memiliki beberapa karakter tersembunyi di buffer dan pengguliran horizontal membunuh penyelarasan waktu besar.
Apakah ada cara bagaimana menonaktifkannya? Saya tidak dapat menemukan opsi yang relevan.
Edit: Demo ditambahkan. Anda dapat melihat vim mendasarkan offset gulir pada bagian file yang tidak ditutup, oleh karena itu aligment rusak.
:set wrap
<c-s>
untuk menangguhkan terminal sehingga layar tidak memperbarui. Anda kemudian dapat secara buta melakukan perubahan dan kembali ke awal baris dan tekan<c-q>
untuk melanjutkan. Opsi lain yang mungkin tidak membantu: memastikan bahwa jumlah karakter tersembunyi yang sama ada di antara setiap karakter yang terlihat atau memperlebar jendela.Jawaban:
Cara menonaktifkan pengguliran horizontal
Saya telah menulis solusi yang menonaktifkan pengguliran horizontal, (dengan melepas saran @ ЯрославРахматуллин ), tetapi saya tidak berpikir Anda akan menyukainya:
Ini mencegah pengguliran ke kanan dengan metode yang sangat tepat dengan hanya menggulir kembali. *
* Karena saya tidak tahu seberapa jauh Anda menggulir ke kanan atau berapa lama garis Anda, saya menggulir jumlah "setengah" sewenang-wenang dari 99 lebar layar setengah. Perhatikan juga bahwa saya tidak repot-repot memeriksa apakah Anda benar-benar telah menggulir ke kanan sebelum menggulir "kembali" ke kiri. Jika Anda benar-benar berniat untuk menggunakan solusi ini, Anda mungkin ingin mengetuk sesuatu dengan membandingkan nilai-nilai
getcurpos()
,'sidescroll'
dan'columns'
.Mengapa Anda tidak mau melakukannya
Alasan Anda tidak akan menggunakan ini adalah bahwa yang mendasari masalah gulir adalah masalah lain: Vim tidak akan membiarkan Anda memindahkan kursor "dari layar". Oleh karena itu, jika Anda menggulir ke kiri sedemikian rupa sehingga kursor akan mati layar setelah gulir, Vim membantu membawa kursor bersamanya dan memindahkannya ke kiri.
Tetapi karena perhitungan yang digunakan untuk apakah kursor ada di layar sama dengan yang digunakan untuk memutuskan apakah akan menggulir masalah asli, efek bersihnya adalah dengan adanya "solusi" ini di tempat, jika Anda mencoba untuk memindahkan kursor ke kanan dalam situasi yang biasanya menyebabkan gulir ke samping, sekarang kursor menolak untuk bergerak sama sekali. **
** Untuk sedikit lebih tepat, tergantung pada posisi saat ini dan gerakan, kursor dapat bergerak ke kanan; itu tidak akan bergerak melewati posisi di mana sebuah scroll biasanya muncul.
Pilihan lain?
Jadi saya khawatir solusi yang Anda rencanakan tidak akan berhasil. Jika Anda ingin solusi yang bisa diterapkan untuk masalah umum, itu perlu diimplementasikan dalam kode sumber Vim.
Seperti yang sudah Anda catat , ini tidak mungkin tiba dalam waktu dekat, jadi saya khawatir Anda sebaiknya mencari solusi untuk contoh spesifik masalah yang ditampilkan di gif Anda adalah mengajukan petisi kepada pembuat plugin untuk berhenti menggunakan
conceal
sepenuhnya dan sebagai gantinya hapus teks tersembunyi dari buffer sepenuhnya.Berdasarkan output yang tidak dikenali dan disebutkan
vim-plugin-AnsiEsc
dalam dokumentasi ini mungkin sesuatu yang mungkin bagi mereka untuk menerapkan, tetapi sulit untuk mengatakan dengan pasti tanpa pengetahuan tentang bagaimana fungsi plugin.sumber
Jika Anda memiliki cara untuk mengedit file, Anda mungkin ingin membungkus pengaturan warna dengan
\[
dan\]
, seperti yang dijelaskan di sini :Jika tidak, seluruh kode warna dianggap sebagai karakter, dan karenanya dapat diperhitungkan sebagai gulir horizontal.
Saya tidak yakin ini masalahnya, tetapi melihat sumber kalender (dengan
syntax off
) dan perilaku saat ini, itu membuat saya berpikir tentang itu.sumber
conceal
fitur (lihat diskusi di komentar).EDIT: Ini adalah bug yang dikenal, ditutup "tidak akan diperbaiki": https://github.com/vim/vim/issues/260
Jawaban asli:
Vim saya tidak menggulir secara horizontal sampai kursor menyentuh tepi layar.
Apakah Anda menggunakan
sidescrolloff
?Saya tidak tahu tentang menonaktifkan pengguliran horizontal sepenuhnya, tetapi pengaturan ini harus membuatnya menunggu sampai kursor keluar dari tepi:
sumber
'sidescrolloff=0'
karena Vim percaya kursor telah keluar dari tepi: itu mendasarkan perhitungannya pada teks yang tidak disembunyikan, bukan teks yang terlihat.