リモート接続してCUI環境で作業することが多くなってきたので,CUIなテキストエディタも使えるように環境を整備し始めました.
基本的に政治と宗教の話はしないのですが,私はemacsを使うことにしました. emacsベテランの方はいろいろ教えていただけると嬉しいです.
環境
OS: Mac OSX 10.10.4 パッケージ管理: Homebrew, Homebrew-cask
emacs のインストール
デフォルトで入ってるのは古いので,以下のコマンドで新しいのをインストールします.
$ brew install --with-cocoa emacs $ ln -sfv /usr/local/opt/emacs/*.plist ~/Library/LaunchAgents $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.emacs.plist $ brew linkapps emacs
--with-cocoa
オプションをつけると,GUIでもemacsが使えるようになります.
ファイルをダブルクリックしてemacsを開いて編集したいときは,必要です.
ただし,関連付けは行ってくれないので,自分でやる必要があります(コマンドで設定する方法があれば教えてください).
基本操作
とりあえず,
- C-? は Ctrl + ?
- M-? が Esc + ?
であることがわかれば,後は自分で検索して何とか出来るはず.
- 参考サイト: Emacsの基本的キー操作
init.elの作成
emacsはホームディレクトリ以下の .emacs
ファイルや .emacs.d
以下にプラグインを記述することで機能を拡張できるようです.
プラグインは Emacs 用のLisp,Emacs Lisp を使って記述します.拡張子は.el
です.
以下のコマンドを実行して, .emacs.d/init.el
を作ります(もし.emacs
ファイルがインストール時にできていた場合は,それを削除してください).
$ mkdir ~/.emacs.d $ touch ~/.emacs.d/init.el
パッケージ管理システム
リポジトリの登録
emacs24からは,emacsプラグイン用のパッケージ管理システムがデフォルトで入っています. ただし,リポジトリを登録しないと使えないので,その設定をします.
.emacs.d/init.el を開いて以下を追記し,リポジトリの一つであるMELPAを追加してください.
(require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t) (when (< emacs-major-version 24) ;; For important compatibility libraries like cl-lib (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) (package-initialize)
記述後,emacsを再起動するとパッケージ管理システムが使えるようになります.
パッケージ管理システムの使い方
以下のコマンドを実行すると,パッケージ管理システムの画面が立ち上がります.
M-x package-list-packages
起動した後の画面はこんな感じ
パッケージのインストール方法は,インストールしたいパッケージ名(青色になってるところ)にカーソルを移動し,Enterを押すと画面の下半分にパッケージの詳細が出ます.
その状態で C-x o
(Ctrl+xを入力後,Ctrlを離してoを入力) を入力すると,下半分の詳細欄にカーソルが移動します.
その後「Install」のところにカーソルを持っていき,Enterを押すと以下の様な確認メッセージが出るので,そこで「y」を押せばインストールが開始されます.
インストールしたパッケージ
とりあえずmultiple-cursorsをインストールして,SublimeTextのCmd+DやCmd+Shift+Lを使えるようにしてみました.
region-bindings-mode(インストールが必要)を使ってキーバインドを登録しているので,Ctrl+spaceで範囲を選択後
- aを押すと,選択した単語すべてを選択してカーソルを増殖
- nを押すと,選択した単語を順番に選択してカーソルを増殖
- lを押すと,選択した行全てにカーソルを増殖
できるようにしています.
カーソルを1つに戻したいときは,Ctrl+spaceを入力して範囲選択モードに入った後,「;」を入力するとmultiple-cursorsモードが終了します.