emacsのススメ

emacs楽しい!

前に勉強したいリストにemacsをちょこちょこ触ってるんですが、触るたびに楽しくなってきています。
勉強したいリスト - 意識高く生きたいブログ

普通にテキストエディタとして使うのは当然として、PythonやGo言語を書く際のIDE代わりにも使ってますし、最近はコマンドもemacsから実行するようになってきました。
もはやサーバにログインしたらログアウトするまでemacs開きっぱなし状態

個人的によく使うコマンドはこんな感じ

注:一般的な設定,キーボードの場合、C = ctrlキー, M = ESCキー を表す

コマンド 意味
C-x C-s 保存
C-x C-c emacsを閉じる(全windowを閉じる)
C-x 2 windowを横に分割
C-x 3 windowを縦に分割
C-x 0 選択中のwindowを閉じる
C-x o 次のwindowを選択する
C-x C-b バッファ一覧を表示(選択したバッファを開くことも可能)
C-x k バッファを閉じる
C-a 行頭に移動
C-e 行末に移動
M-< 最初の行に移動
M-> 最後の行に移動
M-g 数値 指定した行に移動
C-k 行末までカット
C-space 範囲選択開始
M-w 選択している範囲をコピー
C-y 貼り付け
C-/ undo
C-s 文字列 文字列を検索
C-x d (バッファごとの)カレントディレクトリを移動
C-x C-f 別のファイルを開く
M-x package-list-packages インストール可能なパッケージ一覧表示
M-! コマンド コマンド実行
M-! コマンド & 非同期でコマンド実行。また、対話式コマンドにも対応可能

後は自分で設定しているキーバインドとして

C-x ←キー|左のwindowに移動
C-x →キー|右のwindowに移動
C-x ↑キー|上のwindowに移動
C-x ↓キー|下のwindowに移動

参考に、↑の設定をする為に~/.emacs.d/init.elに書いている内容はこんな感じ

(global-set-key (kbd "C-x <left>")  'windmove-left)
(global-set-key (kbd "C-x <right>") 'windmove-right)
(global-set-key (kbd "C-x <up>")    'windmove-up)
(global-set-key (kbd "C-x <down>")  'windmove-down)

注:emacswikiによるとC-xよりもC-cでバインドする方がおすすめのようですが、私はwindow扱うコマンドはC-xで統一しちゃってます。
  EmacsWiki: Wind Move

で、使用イメージとしてこんな感じのterminal状態になります。 f:id:hosibui:20170331233315p:plain 画面4分割して複数ファイルを同時に開いて編集しながらコマンド実行して、そのコマンド実行結果も他のwindowに出す。みたいな。
コマンド実行結果をwindowに出力する利点としては、emacsを閉じなくてもコマンド実行結果が確認できることと、キー操作だけで実行結果をコピーしたりできるので楽なところです。

また、バッファを切り替えてやれば限られた数のwindowでもどんどん画面を切り替えて使うことができます。
下の画像の4分割されたwindowのうちの左下がC-x C-bでバッファ一覧を開いた画面で、任意のバッファを選択してやることで、このwindowでそのバッファを開くことができます。 f:id:hosibui:20170331233634p:plain

pythonとかgo用の開発環境化してる部分にも触れようかと思ったけど記事書くのに飽きてきたのでここらへんで終わり!