$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

Emacsで現在開いているファイルを一瞬でVSCodeで開く方法、そしてその逆

Reactを最近勉強し始めたのでVSCodeも使ってみるかと思っている。そうはいってもEmacsを使いたいときもあるので、

  • Emacsで現在開いているファイルをVSCodeで開く(カーソル位置も保持)
  • VSCodeで今開いているファイルをEmacsで開く(カーソル位置も保持)

の両方をやりたい。ということでやってみた。

Emacsで現在開いているファイルをVSCodeで開く

実装はこれ -> https://github.com/shibayu36/emacs/commit/9699a693d45b8d3b355b15b57c6e6b3f827d6483

単純にcodeコマンドを使って現在のファイル名、行数、カラム数を渡してあげると良い。

;;; 現在のファイルをvscodeで開く
(defun open-by-vscode ()
  (interactive)
  (shell-command
   (format "code -r -g %s:%d:%d"
           (buffer-file-name)
           (line-number-at-pos)
           (current-column))))

(define-key global-map (kbd "C-c C-v") 'open-by-vscode)

これでC-c C-vを押せば、一瞬でEmacsの現在カーソル位置をVSCodeで開ける。

VSCodeで今開いているファイルをEmacsで開く

こちらはOpen in Editorというプラグインを使うと簡単にできる。emacsclientコマンドに現在のファイル名、行数、カラム数を渡してあげると良い。

プラグインをインストールし、settings.jsonに以下のように記述を追加した。

  "alt-editor.binary": "emacsclient",
  "alt-editor.args": "-n +{line}:{column} {filename}"

さらにkeybindings.jsonには以下のように記述。

    {
        "key": "ctrl+c ctrl+e",
        "command": "alt-editor.openFile",
        "when": "editorTextFocus"
    }

これでVSCode上でC-c C-eを押せば、一瞬でVSCodeの現在カーソル位置をEmacsで開ける。

まとめ

今回はEmacsVSCodeを手軽に行ったり来たりする方法について書いてみた。これで両方のエディタを得意な領域に合わせて使い分けられるかな?