Emacs

Emacs標準のファイラdiredの基本的な使い方と便利なTipsいくつか

More than 5 years have passed since last update.

Emacsをファイラとして使えるようになるdiredですが、便利な割に意外と使われていないようなので簡単に使い方をまとめました。

基本操作

diredバッファを開く

キーバインド 説明
C-x d 任意のディレクトリをdiredバッファで開く

普通にfind-fileでディレトリを指定しても開けます。

基本操作

キーバインド 説明
n カーソルを1行下に移動
p カーソルを1行上に移動
RET, f ファイルを開く
o ファイルを別ウィンドウで開く
v ファイルをview-modeで開く
m ファイルをマークする
u カーソル位置のマークを解除する
U すべてのマークを解除する
C マークされたファイルをコピーする
D マークされたファイルを削除する
R マークされたファイルを移動する
+ ディレクトリを作成する
q diredバッファを閉じる
X カーソル位置のファイルに対して任意のシェルコマンドを実行する

おすすめの設定

;; diredを2つのウィンドウで開いている時に、デフォルトの移動orコピー先をもう一方のdiredで開いているディレクトリにする
(setq dired-dwim-target t)
;; ディレクトリを再帰的にコピーする
(setq dired-recursive-copies 'always)
;; diredバッファでC-sした時にファイル名だけにマッチするように
(setq dired-isearch-filenames t)

dired-dwim-targetは便利なので特に理由がない限りtを指定すると良いと思います。

覚えておくと便利な操作

ファイル名で操作対象を絞る

正規表現にマッチする名前のファイルをマークしたり、findの結果からdiredバッファを表示できます。

  • % m 正規表現にマッチする名前のファイルをマーク
  • t マークを反転させる
  • M-x find-name-dired ワイルドカードによるファイルの検索結果をdiredバッファに表示

画像表示

画像ファイルをマークした状態でC-t C-tを押下することで、diredバッファ内に画像のサムネイルを表示させることができます。

サーバ上のディレクトリをdiredで開く

TRAMPのおかげで、SSHで接続したサーバ上のディレクトリもローカルのディレクトリと同様に扱うことができます。
ファイルを開く時に、/ssh:<username>@<hostname>:<directory>を指定するだけです。

最近Software Design誌のEmacs特集を読んで、multi-hopの設定をすることで多段SSHもできることを知りました。さらにsshだけでなくsftpやsmbも使えるそうなので、大抵のファイル転送はEmacsだけで対応できそうです。

圧縮ファイルの操作

diredバッファでは、Zキーで各種圧縮ファイルを展開することできます。ファイルの拡張子ごとに展開にどのプログラムを使用するかが変数dired-compress-file-suffixesに定義されているのですが、よく使うであろうzip形式の定義がないので以下の記述で追記すると良いでしょう。

;; .zipで終わるファイルをZキーで展開できるように
(add-to-list 'dired-compress-file-suffixes '("\\.zip\\'" ".zip" "unzip"))

diredバッファでマークしたファイルをzip形式で圧縮するコマンドが以下のURLに記載されているので、併せてそちらもinit.elに追加しておくと便利だと思います。
http://stackoverflow.com/questions/1431351/how-do-i-uncompress-unzip-within-emacs