GNU EmacsのTips...
vi風〈行のシフト〉
(2000.09.12)
(リージョンと字下げ)

概要

 vi風の、「行を左右にシフトする」コマンドを作る(<<, >>)。

適用範囲

GNU Emacs 19.34 (Mule 2.3)
GNU Emacs 20.5.1

解説

 Emacsでは文書の「型」に応じてテキストを整形するのが流儀らしい けれど、な〜〜にもしないでいてくれるのが嬉しい。
字下げはシンプルにタブでいい。そしてタブはやっぱりスペース8個で あって欲しい。

 ということで、vi風に、選択範囲をタブ1個分左右にシフトする、そ んなコマンドを作ってみました。

 「右にシフト」は、選択範囲をタブ1個分字下げします。

 「左にシフト」は、選択範囲の各行頭からタブ1個分のスペースを取 り除きます。

 といっても実際にやるのはEmacsのコマンドで、ぼくは何もしていま せん。

 そして、相変わらずエラーや例外の処理は考えに入れてません。

コード

  1: (defun shift-left (n)
  2:  "shift left."
  3:  (interactive "p")
  4:  (indent-rigidly (region-beginning)  
  5:          (region-end) 
  6:          (* n (- tab-width))))
  7: 
  8: (defun shift-right (n)
  9:  "shift right."
 10:  (interactive "p")
 11:  (indent-rigidly (region-beginning) 
 12:          (region-end) 
 13:          (* n tab-width)))

補足

 Emacs流の「文書の型に応じて字下げの仕方を変えたりする」という のは、便利な一面もあるだろうしうれしい局面もあるだろうし必須であ る場合もあるでしょう。

 が、ぼくが個人で使う分にはうれしくないことの方が多いので、よく 書く文書はみ〜〜んなTextモードにしています。という使い方をしてい ると、けっこう重宝するコマンドだと思います。

(2000.09.12)

GNU EmacsのTipsへ
参考図書へ
コンピューター言語研究所へ
トップページへ
(C) ©Copyright Noboru HIWAMATA (nulpleno). All rights reserved.