GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Visual-Line-Mode.html ・ emacs-doc.conao3.com

16.23 ビジュアルラインモード

通常の行継続(継続行を参照)に代わるもう一つの方法は、ワードラップを使用することです。ここでは、通常の行継続と同様に、各長い論理行が2つ以上の画面行、すなわち「ビジュアル行」に分割されます。ただし、Emacsはウィンドウの右端付近で、単語の境界に合わせて行を折り返そうとします。(行の方向が右から左の場合は、代わりにウィンドウの左端で折り返されます。)これにより、単語の途中で折り返しが発生しないため、テキストが読みやすくなります。

ワードラップは、オプションのマイナーモードであるVisual Lineモードによって有効になります。現在のバッファでVisual Lineモードを有効にするには M-x visual-line-mode と入力し、このコマンドを繰り返すと無効になります。また、メニューバーからVisual Lineモードを有効にすることもできます。Optionsメニューで ‘Line Wrapping in this Buffer’ サブメニューを選択し、続いて ‘Word Wrap (Visual Line mode)’ メニュー項目を選択します。Visual Lineモードが有効な間、モードラインのモード表示には ‘wrap’ という文字列が表示されます。コマンド M-x global-visual-line-mode は、すべてのバッファでVisual Lineモードを切り替えます。

ワードラップと行の切り捨て(前節で説明)は相反するため、visual-line-mode をオンにすると行の切り捨てが無効になります。

ビジュアルラインモードでは、一部の編集コマンドが論理行ではなくスクリーン行単位で動作します。C-a (beginning-of-visual-line) はスクリーン行の先頭に移動し、C-e (end-of-visual-line) はスクリーン行の末尾に移動し、C-k (kill-visual-line) はスクリーン行の末尾までのテキストを消去します。

論理行を移動するには、M-x next-logical-line および M-x previous-logical-line コマンドを使用します。これらのコマンドは、ビジュアルラインモードの有効・無効にかかわらず、それぞれ次の論理行と前の論理行にポイントを移動します。これらのコマンドを頻繁に使用する場合は、キーバインドを割り当てると便利です。初期化ファイルでのキー再割り当てを参照してください。

デフォルトでは、折り返した行にフリンジインジケーターは表示されません。ビジュアルラインモードは、長い論理行を多く含むファイルの編集によく使用されるため、折り返した各行にフリンジインジケーターが表示されると、視覚的な妨げになります。変数 visual-line-fringe-indicators をカスタマイズすることで、この設定を変更できます。

デフォルトでは、EmacsはSPCやTABのような空白文字の後でのみ行を折りますが、EN QUADのような空白文字の後には折りません。Emacsには、現在のモードでワードラッピングを有効にし、word-wrap-whitespace-charactersユーザーオプションに基づいてどの文字で行を折るかを設定するword-wrap-whitespace-modeというマイナーモードが用意されています。また、このモードのグローバル版としてglobal-word-wrap-whitespace-modeもあります。

空白文字の後でのみ改行する設定は、CJK文字とラテン文字が混在している場合に正しくない結果となります(CJK文字は単語の区切りに空白を使用しないためです)。オプション word-wrap-by-category をカスタマイズして、‘|’ カテゴリに属する任意の文字の後で改行するように設定できます(Emacs Lisp リファレンスマニュアル の Categories を参照)。これにより、CJK文字をより適切に扱うことができます。また、この変数を Customize で設定した場合、Emacs は自動的に kinsoku.el を読み込みます。kinsoku.el が読み込まれている場合、Emacs は改行時に禁則ルールに従います。つまり、‘>’ カテゴリの文字は行頭に現れず(例:U+FF0C FULLWIDTH COMMA)、‘<’ カテゴリの文字は行末に現れません(例:U+300A LEFT DOUBLE ANGLE BRACKET)。文字のカテゴリセットは、コマンド char-category-set および category-set-mnemonics を使用するか、文字にポイントを置いた状態で C-u C-x = と入力し、レポートの “category” セクションを確認することで表示できます。また、コマンド modify-category-entry を使用して文字にカテゴリを追加できます。