16

私はemacsでテキストをnスペースで右または左にシフトする方法を探しています。<<vimまたは。と同様の機能>>。リージョンで機能するか、現在の行でリージョンが選択されておらず、カーソルを現在の場所から移動しない場合に機能するはずです。

EmacsWikiのソリューションはM-x indent-rigidly、最後に使用された領域をいくらか記憶し、代わりにその領域をシフトするため、あまりうまく機能しません。最も近いのはここにあるようですが、私はそれを機能させることができませんでした。私はLisp開発者ではないので、コードを変更するのは難しいです。助けていただければ幸いです。

ありがとう!

4

3 に答える 3

37

地域を選択すると、 C-u C-x <tab>4スペースシフトします。Cuの後に数字を入力して、4を他の数字に変更できます。

于 2012-10-30T14:09:59.987 に答える
9

多分これはあなたが望むように動作します。

(defunシフトテキスト(距離)
  (if(use-region-p)
      (let((mark(mark)))
        (保存エクスカーション
          (インデント-厳密に(領域開始)
                          (リージョンエンド)
                          距離)
          (プッシュマークマークtt)
          (setq deactivate-mark nil)))
    (インデント-厳密に(行開始位置)
                    (行末位置)
                    距離)))

(defun shift-right(count)
  (インタラクティブな「p」)
  (シフトテキストカウント))

(defun shift-left(count)
  (インタラクティブな「p」)
  (shift-text(-count)))
于 2010-07-01T09:48:13.707 に答える
6

これを達成するために、私は通常トリックを行います:

  • CUAモードをアクティブにする
  • 行頭に移動
  • C-RET、カーソルを動かすと、長方形の赤い領域が表示されます。
  • カーソルを行の下に移動し、正しいシフトが得られるまでスペースを入力します。

これは、プログラムによっても何らかの方法で(同じ方法で)実行できます。

編集:emacs wikiの記事を読んだばかりですが、「一般的な」長方形の選択よりもはるかに強力なCUAモードを除いて、同じソリューションです(視覚的であるため)。

于 2010-07-01T09:22:42.990 に答える