タグ別アーカイブ: Windows

Emacsで編集中のファイルをWindowsの標準アプリやエクスプローラーで開く

調べたらいろいろやりかたは見つかったのですが、パス名に日本語や半角スペースが含まれるとうまく動かなかったり…でわりと苦労したので、
最終的にうまく動いたやつをまとめておきます。

現在編集中のファイルのあるフォルダをエクスプローラーで開く

(defun explorer()
  "ファイルの場所をexplorerで開く"
  (interactive)
  (shell-command "explorer ."))

shell-commandでexplorerを呼びだしているだけです。
引数はbuffer-file-nameからディレクトリパスを導く方法とかいろいろあったのですが、
なんか結局”.”で動きました。

現在編集中のファイルをWindows標準のアプリで開く / diredから特定のファイルをWindows標準のアプリで開く

(defun unix-to-dos-filename(file)
  "ファイルパスの/を\に置換し、sjisに変換"
  (encode-coding-string (concat (mapcar '(lambda (x) (if(= x ?/) ?\\ x)) (string-to-list file))) 'sjis))

(defun cygstart-dired()
  "diredからファイルをWindows標準で開く"
  (interactive)
  (let ((file (dired-get-filename)))
    (message "open %s" file)
    (shell-command (concat "cygstart " (unix-to-dos-filename file)))))

(defun cygstart()
  "現在のファイルをWindows標準で開く"
  (interactive)
  (shell-command (concat "cygstart " (unix-to-dos-filename (buffer-file-name)))))

ここではcygwinに含まれるcygstartというコマンドを利用しています。これはWindows標準のアプリでファイルを開くコマンドです。
cygstartを使わずにファイル名を直接 shell-command に渡しても動きそうな気はするのですが、一部の日本語ファイル名のファイルがうまく開けませんでした。

unix-to-dos-filename はmeadowにデフォルトでついてくる関数を再現したもののようです。

 

Windows上のEmacsからリモートのファイルを編集 (tramp, putty (ssh))

tramp を使うとemacs上からssh経由でリモートのファイルを編集できる。最近のemacsならデフォで入ってる。

Windowsの場合、sshのかわりにputty付属のplinkというコマンドが使える。

/plink:user@server#port:file_to_path 

この際、環境変数PATHを編集して、puttyフォルダにパスを通しておくこと。
emacs上でも環境変数をいじれる。

(setenv "PATH" (concat "C:\\Putty" ";" (getenv "PATH"))) 

さらに、

(setq-default tramp-default-method "plink")

としておけば、”plink:”部分は省略できるらしい。

参考:
WindowsのGNU EmacsでSSH接続してファイルを編集する – Fight the Future

 

Emacs24におけるマウス選択の挙動

killリングまわりの挙動が変わってるみたいですね。
通常のkillやcopyはクリップボード使用、マウスで選択した場合は別の場所に保存されるみたいです。
メモとか:Emacs24のselection挙動

わかりやすくなったのかもしれないけど、以前の挙動に慣れてると戸惑いそう。
まあ、マウス使わなければ関係ないか。

 

Emacs24をWindowsにインストールしてみた

昔はWindowsでEmacsといえばMeadowだったけど、最近は更新が止まってるみたい。
GNUからWindows用バイナリが配布されているので、それを使う。

GNU Project Archives

解凍してすぐ使える。起動するにはrunemacs.exe。C:直下あたりに置いて、環境変数の設定でパスを通しておくのが常道。
.emacsを読み込ませるディレクトリを変えるには、環境変数HOMEを変更。
起動時のカレントディレクトリを変えるには、runemacs.exe のショートカットを作り、プロパティで「作業フォルダー」を設定。

ほかに、gnupack (cygwin + emacs package)を使う方法もあるらしい。cygwinもセットで入るみたいなので便利かも?

emacs24 と emacs23 との違いは、このあたりを参考に。
Emacs24 のインストールと新機能 : 紹介マニア
emacs24.1 で増えた関数/消えた関数の一覧をつくった – わからん

さらっと言語仕様変わってるし。ついにelispもレキシカルスコープが!関数型言語教な人々に馬鹿にされる要素が一つ減った感じがしますね。
でも既存のパッケージでグローバル変数使いまくってるやつは動かなくなったりするのかな。
今のところ私の環境では特に不具合出ていませんが。

パッケージ管理はなかなか便利かも。パッケージ一覧が出るのは良いね。
今までも auto-install.el とか el-get.el とかいろいろ使ってみたけど、これなら乗り換えてもいいかな。