水平スクロールを無効にする方法
水平スクロールを無効にするソリューションを作成しました(@ЯрославРахматуллинの提案をリフティングすることにより)
augroup NoScrollPlease
autocmd!
autocmd CursorMoved * norm!99zH
augroup END
これにより、再びスクロールするという非常に正確な方法により、右へのスクロールが防止されます。*
*右にスクロールした距離や行の長さがわからないため、任意の「遠い」量の半画面幅99をスクロールしています。また、左に「戻る」前にスクロールする前に、実際に右にスクロールしたかどうかを確認する必要はありません。実際にこのソリューションを使用する場合はgetcurpos()
、'sidescroll'
との値を比較して、何かをノックアップすることができます'columns'
。
なぜそうしたくないのか
これを使用しない理由は、スクロールの問題の根底にある別の問題であるためです。Vimではカーソルを「画面外」に移動することはできません。したがって、スクロール後にカーソルが画面外になるように左にスクロールすると、Vimはカーソルを一緒に持ってきて、左に移動します。
ただし、カーソルが画面上にあるかどうかに使用する計算は、元の問題でスクロールするかどうかを決定するために使用する計算と同じであるため、最終的な効果は、この「解決策」を使用して移動しようとすると通常横スクロールを引き起こす状況でカーソルを右に移動しますが、カーソルはまったく移動を拒否します。**
**現在の位置と動きに応じて、わずかに正確にするために、カーソルは右に移動する場合があります。スクロールが通常発生する位置を超えて移動することはありません。
別のオプション?
したがって、計画されている回避策がうまく機能しないのではないかと心配しています。必要に応じて実行可能な一般的な問題の解決策を、Vimのソースコードで実装する必要があるだろう。
すでに述べてきた私はあなたのgifに示した問題の特定のインスタンスへの回避策のための最善の策は、使用を中止し、プラグインの作者に請願することです怖いので、これは、いつでもすぐに到着することはほとんどありませんconceal
完全にし、代わりに非表示のテキストをバッファから完全に削除します。
unconcealed出力との言及に基づきvim-plugin-AnsiEsc
におけるドキュメントこれがかもしれないそれらが実装することが可能だが、それがどのようにプラグイン機能の知識がなくても確かに言うのは難しいものになります。
:set wrap