【古い情報】削除予定(旧 ‘Emacs 24.4 と MacVim 7.4 のコマンド’)
※Emacs 25がリリースされたのでこの記事は古くなりました。他のサイトをご覧ください。
Emacs 24.4 & MacVim 7.4 メモ
【バージョンの違い】 ;; Yosemite、MavericksのプリインストールのemacsはGNU Emacs 22.1.1 ;; (when (>= emacs-major-version 24) ;; カラーテーマ、パッケージ管理はバージョン24から ;; 以下の機能はバージョン24.4から ;; C-x SPCで短形選択 ;; view-modeでのShift-SPC移動 ;; レジスタ入力時プレビュー機能 ;; レジスタにキーボードマクロ登録 ;; electric-indent-mode (RET,C-m,C-jの挙動) ;; isearch-forward-symbol-at-point (Vimの*) ;; desktop-save-mode (ウィンドウ/フレーム、バッファの状態を保存) ;; cua-rectangle-mark-mode (cua-modeの短形編集実行) ;; toggle-frame-fullscreen (全画面表示) ;; toggle-frame-maximized (画面最大化) ;; (global-set-key (kbd "C-s-f") 'toggle-frame-fullscreen) ;; ) ;; (when (>= emacs-major-version 23) ;; linum-modeはバージョン23から ;; ) " Yosemite、Mavericksのプリインストールのvimはバージョン7.3 " .vimrcでバージョン7.4との違いは特に気にしなくていい。 # (※備考:Tiger(10.4.11)ではEmacs 21.2.1 (powerpc-apple-darwin8.0)、Vim 6.2)
- helm: http://tuhdo.github.io/helm-intro.html
- 画面端にきたら一行ずつスクロールするようにする。; init.el (setq scroll-step 1)
- 標準機能のredoは不自由。
- C-@、C-Shift-SPCを使うとSpotlightのキーは変えなくていい。
MacVim
- MacVim-KaoriYa: https://github.com/splhack/macvim-kaoriya
- ブラウザから戻ったときのIME → システム環境設定の「書類ごとに入力ソースを自動的に切り替える」*1
※表記について
見やすさのため引数の表記を、鉤括弧で囲んで"[引数名]"としてある箇所がある。(正規表現や省略可否の意味とは異なる。) 例 :set lines=[行数]
ヘルプ
Emacs ヘルプ
Emacs ヘルプ | 関数名 | 説明 |
---|---|---|
<f1> c [キー] | describe-key-briefly | キーに対応する関数 (ミニバッファ表示) |
<f1> k [キー] | describe-key | キーに対応する関数 (詳細表示) |
<f1> f [関数] | describe-function | 関数の詳細説明とキーバインド |
<f1> w [関数] | where-is | 関数のキーバインド (ミニバッファ表示) |
<f1> b | describe-bindings | 現在のバッファのキーバインド一覧 *2 |
<f1> m | describe-mode | 現在のバッファのモードの説明 |
<f1> a [ワード] | apropos | キーワード検索(関数と変数) |
<f1> i | info | 各種情報、マニュアル類 *3 |
<f1> v [変数] | variables | elisp変数 |
<f1> r | info-emacs-manual | ユーザーマニュアル |
<f1> t | help-with-tutorial | チュートリアル |
<f1> p | finder-by-keyword | 項目から説明を見つける |
<f1> n | view-emacs-news | Emacsの更新情報 |
<f1> r → "Search" | (正規表現のマニュアル) | 【参考】EmacsWiki |
;; (helm-M-x コマンドを絞り込む (カーソルのあるコマンド名で、C-zで説明文表示)) ;; (helm-apropos キーワード検索 (commands, functions, variables and faces.))
Vim ヘルプ
Vim ヘルプ | 接頭子 | 例 (:h = :help) | トップ/一覧 |
---|---|---|---|
Normal mode | - | :h j | :h normal-index |
Insert mode | i_ | :h i_ESC | :h insert-index |
Visual mode | v_ | :h v_x | :h visual-index |
Command-line mode | c_ | :h c_CTRL-D | :h ex-edit-index |
ex コマンド | : | :h :write | :h ex-cmd-index |
オプション | ' | :h 'tabstop' | :h option-list |
ウィンドウ関連 | - | - | :h windows.txt |
ヘルプインデックス | - | - | :h index.txt |
ユーザーマニュアル | - | - | :h user-manual |
チュートリアル | - | - | :Tutorial ($ vimtutor) |
Vimの更新情報 | - | :h version7.4 | :h version7.txt |
自前やプラグインに よるキーバインド |
- | - | :map (モード nvo) :map! (モード ic) |
正規表現 | - | :h pattern-overview | :h pattern.txt |
" リンク → CTRL-]でジャンプ, CTRL-Tで戻る " :helpgrep [検索語句] ヘルプ検索 " :cwindow 検索結果一覧ウィンドウ (<CR>でジャンプ、CTRL-W pで一覧に戻る) " :cclose 検索結果一覧ウィンドウを閉じる
移動
移動 | Emacs | Vim |
---|---|---|
上下左右 | C-f, C-b, C-n, C-p | h, j, k, l gj, gk |
単語単位 | M-f, M-b | w, e, b, ge W, E, B, gE |
現在行の指定した文字 | - | f[文字], t[文字] F[文字], T[文字] |
行頭、行末 | C-a, M-m, C-e | 0, ^, $ g0, g^, g$ |
文章単位 | M-a, M-e | () |
段落単位 | M-{, M-} | {} |
カーソル行を画面の 上中下にスクロール |
C-l を1〜3回数 | zt, zz, zb, z<CR>, z., z- (カラム先頭) |
カーソルのみ画面の 上中下に移動 |
M-r を1〜3回数 | H, M, L |
一行スクロール | M-x scroll-up-line M-x scroll-down-line |
CTRL-E CTRL-Y |
n行スクロール | C-u [数字] C-v C-u [数字] M-v |
[数字] CTRL-E [数字] CTRL-Y |
画面スクロール | C-v, M-v | CTRL-F, CTRL-B |
半画面スクロール | - | CTRL-D, CTRL-U |
指定行にジャンプ | M-g g [数字] | [数字]gg, :[数字] ( [数字]zz, [数字]G) |
次の行のカラム先頭 | - | + (<CR>), -, _ |
バッファの先頭、末尾 | M-<, M-> C-<home>, C-<end> |
gg, G CTRL-<Home>, CTRL-<End> |
元の場所に戻る、進む | - (C-u C-SPC(@) マークのみ) | CTRL-O, CTRL-I |
直前にいた場所に戻る | - (要point-undo.el) | '' ( `` ) |
前回終了時の場所に戻る | - (desktop-save-mode使用 時は、M-x desktop-read) |
'" ( `" ) |
(ジャンプによる カーソル移動履歴) |
- | :jump |
変更した箇所へ移動 | undoとredoを1セットで 一段階戻れる (複数段階は要goto-chg.el) |
g; (前の変更箇所へ) g, (逆方向へ) |
削除
削除 | Emacs | Vim |
---|---|---|
文字削除 | C-d <backspace>, <delete> |
x, X, s, r <Del>, i_<BS> |
単語削除 | M-d, C-<delete> M-<backspace> |
dw, cw, diw, ciw da(, di(, di", da", 他多数 |
行の削除 | C-k C-- C-k (行頭まで) C-S-<backspace> (一行) |
dd, D, d0 S, C, c0 |
文の削除 | C-x <backspace> M-k |
dis (文 ※日本語NG) dip (paragraph) |
指定した文字まで削除 | M-z [文字] C-- M-z [文字] |
df[文字],dt[文字] dF[文字],dT[文字] |
指定した検索語句を 含む行を削除 |
M-x flush-lines M-x keep-lines (逆) (※カーソル位置以降) |
:g/[検索語句]/d :g!/[検索語句]/d (逆) :v/[検索語句]/d (逆) |
行末削除 (行連結) | M-^ | J, gJ |
検索
検索 | Emacs | Vim |
---|---|---|
検索 | C-s, C-r | /, ? |
正規表現に よる検索 |
C-u C-s (C-M-s) C-u C-r (C-M-r) |
/, ? |
次のマッチ箇所 | C-s, C-r | n, N |
前回と同じ検索 | C-s, C-r | /<CR>, ?<CR> |
カーソル位置の 単語を検索 |
C-s C-w (単語先頭で) M-e (検索語句修正) M-s . |
*, # g*, g# (部分一致) |
検索結果一覧 | M-s o (occur) C-c C-f (カーソル位置同期) e (編集) C-c C-c (編集終了) |
:vimgrep [検索語句] % | cwindow :cclose (閉じる) :cwindow (検索結果ウィンドウ) :cn (次へ) :cN, :cp (前へ) |
検索マッチ数 のカウント |
M-x how-many (※カーソル位置以降) |
- (:%s/検索語句/&/gn *4 ) |
検索時の大文字 小文字の区別 |
M-x toggle-case-fold-search | :set ic, :set noic (ignorecase) |
対応するカッコ | C-M-n, C-M-p | % |
強調表示を やめる |
C-g | :nohls |
バッファ内の インデックス |
M-x imenu | - |
置換
置換 | Emacs | Vim |
---|---|---|
置換 | M-x replace-string | :[%]s/検索語句/置換語句/[g] :#,#s/検索語句/置換語句/[g] |
置換 (正規表現) | M-x replace-regexp | 同上 |
対話型置換 | M-% | うしろにcを付ける :[%]s/検索語句/置換語句/gc |
対話型置換 (正規表現) | C-M-% | 同上 |
置換モード (直接上書き) | M-x overwrite-mode <insert> |
R |
マーク
マーク | Emacs | Vim |
---|---|---|
マークの設定 | C-SPC, C-@ | m [マーク名{a-z}] |
名前付きマーク (バッファで有効) |
C-x r SPC [マーク名] | 同上 |
名前付きマーク (終了後も保存) |
C-x r m [ブックマーク名] | m [マーク名{A-Z}] *5 |
指定のマークへ 移動 |
C-x r j [マーク名] C-x r l からブックマーク選択 |
` [マーク名] (マーク位置) ' [マーク名] (マークのある行の先頭) |
過去のマークの 位置へ移動 |
C-u C-SPC C-u C-@ |
CTRL-O, CTRL-I `` (直前のマーク) |
マーク一覧 | M-x list-registers M-x view-register *6 C-x r l (ブックマーク一覧) (helm-mark-ring) |
:marks |
マーク削除 | C-x r l の一覧画面から、 削除するブックマークに dで印、xで実行 |
:delmarks [マーク名] :delmarks! (A-Z, 0-9以外を全削除) |
;; C-x C-SPC, C-x C-@ pop-global-mark
;; (helm-global-mark-ring を使わないと実用的でない。)
範囲選択
範囲選択 | Emacs | Vim |
---|---|---|
範囲選択 | C-SPC, C-@ Shift + カーソルキー |
v |
短形選択 | C-x SPC (C-SPC, C-@でも可) またはcua-modeを使う |
CTRL-V |
選択範囲の解除 | C-g, マーク | v, CTRL-V ESC |
選択範囲の再選択 | C-x C-x さらにC-x SPC (短形) |
gv |
バッファ全体を リージョンにする |
C-x h | ggVG |
文章選択 | M-h | vip |
1行選択 | - | V |
単語選択 | M-@ (単語の先頭で) | vw カーソル直後 viw カーソル位置 |
選択範囲の前に 連番を振る |
C-x r N | - (範囲選択後、!cat -n *7 ) ※ベタ埋め: 範囲選択後、 !awk "{print NR \$0}" |
矩形部分の前に 文字を付け加える |
垂直に短形選択して C-x r t |
範囲選択後、:s/^/文字列/ 短形選択後、I[一文字]ESC |
短形部分の 行末まで選択 |
- (正規表現で行末を置換) |
短形選択後、$ |
リージョン内の文字 数と行数を数える |
M-= | g CTRL-G |
コピー/貼り付け
コピー/貼り付け | Emacs | Vim |
---|---|---|
コピー | M-w | y{motion} "[レジスタ名]y{motion} |
1行コピー | - | yy (Y) |
貼り付け | C-y M-y |
p, P gp, gP :put [レジスタ名] "[レジスタ名]p i_CTRL-R [レジスタ名] |
履歴確認 | (helm-show-kill-ring) | :reg |
補完
補完 | Emacs | Vim |
---|---|---|
単語補完 | M-/ | i_CTRL-P, i_CTRL-N (挿入モード) |
補完(関数、シンボル等) | M-TAB | c_CTRL-D, TAB |
undo, redo
undo, redo | Emacs | Vim |
---|---|---|
undo | C-/, C-_, C-x u | u, U(行) |
redo | C-g C-/ (複数段階は要パッケージ) |
CTRL-R |
コマンドや引数の取り消し | C-g | ESC, <BS> |
再帰編集レベルからの抜け出し | ESC ESC ESC (C-gで抜けられない場合) |
- |
変更履歴 | - (<f1> l (キー入力履歴300) ) |
:changes |
繰り返し
繰り返し | Emacs | Vim |
---|---|---|
直前の編集を 繰り返す |
C-x z (編集以外も可) | . (←ピリオド) |
指定した回数 繰り返す |
C-u [数字] 操作, M-[数字] 操作 (C-- [数字] 操作, M-- [数字] 操作) *11 |
[数字] 操作 |
コマンドの 再実行 |
C-x ESC ESC (M-p, M-nで履歴) (helm-M-x 履歴選択可) (helm-resume) |
: のあとにCTRL-P, CTRL-N @: (直前のコマンドの再実行) |
;; C-u 4回, C-u C-u 16回, C-u C-u C-u 64回
マクロ
マクロ | Emacs | Vim |
---|---|---|
マクロ記録開始 | <f3>, C-x ( | q [マクロ名{a-z}] |
マクロ記録終了 | <f4>, C-x ), C-x e | q |
マクロ呼び出し | <f4>, C-x e (e, e,,,) M-x [保存したマクロ名] (helm-execute-kmacro) |
@ [マクロ名{a-z}] @@ 直前に実行したマクロ |
マクロ記録追加 | - (マクロ編集で追加) |
q [マクロ名{A-Z}] (同小文字のマクロに追加) |
マクロ保存 | C-x C-k n (kmacro-name-last-macro) ※レジスタにも保存可 *12 |
- (レジスタ{a-z}に保存されている) :reg で確認 |
マクロ編集 | C-k C-k RET (直前のマクロ) C-x C-k e |
レジスタ{a-z}の内容を書き換える (:let @{a-z}='[マクロ内容]' *13 ) |
マクロ書き出し | M-x insert-kbd-macro | :put [マクロ名{a-z}], i_CTRL-R [マクロ名{a-z}] |
選択範囲に 対して実行 |
Ctrl-x Ctrl-k r (apply-macro-to-region-lines) 行指向のマクロ内容であること |
範囲選択後、:normal @ [マクロ名{a-z}] |
連番を振る | ・マクロカウンターを使う ・レジスタを使う (※表下参照) ・範囲選択の連番機能を使う |
・CTRL−A, CTRL-Xを使う ・レジスタを使う (※表下参照) |
;;; Emacsマクロカウンター ;; C-x C-k C-i マクロカウンター (kmacro-insert-counter) ; 連番挿入 ;; C-x C-k C-c カウンター値設定 (kmacro-set-counter) ; 現在値を変更 ;; C-x C-k C-f カウンターの書式設定 (kmacro-set-format) ; 例: %x(16進表記) ;; (※書式: http://www.fan.gr.jp/~ring/doc/elisp_19/elisp-jp_6.html#SEC72) ;; C-x C-k C-a カウンター値を増減 (kmacro-add-counter) ; 例: 10(+10される)
レジスタの数字を増減する
レジスタ数字操作 | Emacs | Vim |
---|---|---|
登録 | C-u [数字] C-x r n [レジスタ名] | :let @[レジスタ名]=[数字] |
増減 | C-u [数字] C-x r + [レジスタ名] (increment-register) |
:let @[レジスタ名]=@[レジスタ名]+1 (または任意の計算式) |
挿入 | C-x r g(i) [レジスタ名] | :put [レジスタ名] |
外部コマンド/フィルタ
外部コマンド/フィルタ | Emacs | Vim |
---|---|---|
コマンド実行 | M-! M-& (&実行) |
:! [コマンド] |
リージョンを標準入力として コマンドを実行 |
M-| | :w ! [コマンド] |
リージョンを標準入力として フィルタした結果で書き換え |
C-u M-| | [範囲選択] ! [コマンド] → 範囲 [数字] !! [コマンド] → n行分 :%! [コマンド] → 全行 |
コマンド実行結果の読み込み | C-u M-! C-u M-& |
:r ! [コマンド] |
シェルの起動 | M-x shell M-x eshell *14 M-x term |
:shell |
" Vimフィルタ例 " すべての行に番号をふる。 :%! cat -n " 3行をファイル名として"ls -l"の情報を得る。 3!! xargs ls -l
ファイル操作
ファイル操作 | Emacs | Vim |
---|---|---|
開く | C-x C-f | :e :e! (変更破棄&開き直す) |
バッファ一覧 | C-x C-b | :ls, :ls! |
バッファ切り替え | C-x b, C-x b [バッファ名] C-x ←, C-x → |
:bn, :bp, :b#,CTRL-^, :b [バッファ名/番号] |
保存 | C-x C-s, C-x C-w [別名] | :w, :w [別名] |
ファイル名変更 | C-x C-f → RET → dired → Rでリネーム。qで抜ける。 |
:file, :saveas |
未保存でも別のファ イルを開ける設定 |
- | :set hidden |
無名バッファ | C-x b [新規名称] | :enew |
行番号を表示 | M-x linum-mode | :set nu (number) :set nonu (nonumber) |
ファイル情報表示 | C-x C-j (dired-jump) | CTRL-G, [1,2]CTRL-G |
コメントアウト | M-; | - ([短形選択]文字挿入) |
外部ファイル読込 | C-x i | :r [ファイル名] |
閉じる | C-x k | :bd (delete) |
終了 | C-x C-c | :q (終了), ZZ (保存&終了), :q!, ZQ (変更破棄&終了) |
読み取り専用モード
読み取り専用モード | Emacs | Vim |
---|---|---|
読み取り専用モードで 開く |
C-x C-r M-x view-file (SPCでページ移動可) |
:view [ファイル名] $ vim -R [ファイル名] |
読み取り専用モードに する |
C-x C-q (read-only-mode) M-x view-mode |
:set ro (readonly) |
読み取り専用モードを 解除する |
C-x C-q (read-only-mode), モードラインの%%をクリック |
:set noro (noreadonly) |
別ウィンドウで読み 取り専用で開く |
C-x 4 r | :sview [ファイル名] |
バイナリモード
バイナリモード | Emacs | Vim |
---|---|---|
バイナリモードで開く | M-x hexl-find-file | $ vim -b [ファイル名] |
バイナリモードにする | M-x hexl-mode | :set binary :%!xxd (2バイトごと) :%!xxd -g 1 (1バイトごと) |
元の形式に戻す | C-c C-c (hexl-mode-exit) |
:%!xxd -r |
ディレクトリ操作
ディレクトリ操作 | Emacs | Vim |
---|---|---|
ファイルブラウザ | C-x d | :Explore, :Texplore (タブ), :Hexplore (画面分割) :e [ディレクトリ名] *15 :browse e (GUI環境のみ) |
現在のディレクト リを移動 |
M-x cd | :cd :cd %:h(編集中のファイルのあるディレクトリ) :lcd %:h (同上※カレントウィンドウのみ) |
現在のディレクト リを確認する |
M-x pwd | :pwd |
ウィンドウ
ウィンドウ | Emacs | Vim |
---|---|---|
閉じる | C-x 0 | CTRL-W c, :close :q (閉じる & 終了) |
一つにする | C-x 1 | CTRL-W o, :only |
垂直方向に分割する | C-x 2 | CTRL-W s, :split :new (分割して新規編集) |
水平方向に分割する | C-x 3 | CTRL-W v, :vsplit :vnew (分割して新規編集) |
分割して別のファイ ルを開く |
C-x 4 f | :sp [ファイル名] :vsp [ファイル名] |
ウィンドウ間を 移動する |
C-x o (オー) | CTRL-W w, CTRL-W [h,j,k,l] CTRL-W カーソルキー |
直前のウィンドウに 移動する |
- (C-- C-x o) |
CTRL-W p (二分割時はCTRL-W wと同じ) |
ウィンドウの位置関 係を入れ替える |
- (C-x b, C-x 4 bで手動) |
CTRL-W x, CTRL-W [H,J,K,L] |
ウィンドウ幅を垂直 方向に伸縮する |
C-x ^ C-u [-数字] C-x ^ マウスドラッグ |
CTRL-W + CTRL-W - マウスドラッグ |
ウィンドウ幅を水平 方向に伸縮する |
C-x { C-x } |
CTRL-W < CTRL-W > マウスドラッグ |
伸縮したウィンドウ 幅を元に戻す |
C-x + | CTRL-W = |
自分以外のウィンド ウをスクロールする |
C-M-v C-S-M-v |
- |
スクロール同期 | M-x follow-mode (同一ファイル) |
:set scb (scrollbind) *16 :set noscb |
タブ
タブ | Emacs | Vim |
---|---|---|
新規タブ | - (要パッケージ) |
:tabe, :tabnew |
タブを閉じる | - | :q, :close, :tabclose |
他のタブを閉じる | - | :tabonly |
タブを移動 | - | gt, gT :tabn, :tabp CTRL-<PageDown>, CTRL-<PageUP> |
現タブをn番目に移動 | - | :tabmove [数字] |
先頭、最後のタブ | - | :tabfirst, :tablast |
フレーム (GUI環境)
フレーム (GUI環境) | Emacs | Vim (MacVim) *17 |
---|---|---|
新しいフレーム | C-x 5 2 (make-frame-command) |
⌘ + N |
閉じる | C-x 5 0 (delete-frame) |
⌘ + W :q |
他を閉じる | C-x 5 1 (delete-other-frames) |
- |
フレーム間を移動 | C-x 5 o (other-frame) ⌘ + <f1> (Mac) |
⌘ + <F1> ⌘ + [, ⌘ + ] |
フルスクリーン | M-x toggle-frame-fullscreen | ⌘ + CTRL + F |
最大化 | M-f10 (toggle-frame-maximized) |
- |
拡大/縮小 | - | ⌘ + CTRL + Z |
画面サイズ変更 | - (※表下参照) |
:set columns=[桁数] :set lines=[行数] |
ウィンドウ位置変更 | - (※表下参照) |
:winpos [X座標] [Y座標] |
終了時の状態を保存 | desktop-save-modeを使う *18 | - *19 |
フォント変更 | Shift + 左クリック M-x menu-set-font |
:set guifont=[フォント名(:サイズ)] :set guifont=* (フォントパネル) |
フォントサイズ変更 | C-x C-=(+) C-x C-- C-x C-0 (text-scale-adjust) |
⌘ + = ⌘ + - |
背景色変更 | M-x set-background-color | :set background=[light/dark] |
;; M-:からLisp文実行。または*scratch*に書いてC-j。 ;; 画面サイズ変更 (set-frame-size (selected-frame) [桁数] [行数]) 例: 80 40 ;; 位置変更 (set-frame-position (selected-frame) [X座業] [Y座標]) 例: 0 0 ;; ※現在の状態を確認する (frame-parameters) ;; 背景色16進指定 (set-background-color "#rrggbb") 例: #98bc98
カラーテーマ
カラーテーマ | Emacs | Vim |
---|---|---|
カラーテーマ を設定 |
M-x customize-themes | - |
名前を指定 してロード |
M-x load-theme [テーマ名] | :colorscheme [スキーマ名] 例: default, desert, evening, morning, slate, zellner |
カラーテーマ を追加 |
M-x list-packagesから追加 | - |
文字/改行コード
文字/改行コード | Emacs | Vim |
---|---|---|
文字コード変換 | C-x RET f | :set fenc=[文字コード] :set ff=[ファイルフォーマット] |
文字コードを指定 して再読込 |
C-x RET r | :e ++enc=[文字コード] |
カーソル位置の 文字コードの情報 |
C-u C-x = | :ascii, ga |
;; emacs文字コード変換 http://sourceforge.jp/magazine/09/04/06/1138226/7
文字変換
文字変換 | Emacs | Vim |
---|---|---|
単語の先頭を 大文字にする |
M-c | ~ (トグル) |
単語を大文字にする | M-u | viw → U |
単語を小文字にする | M-l | viw → u |
選択範囲の文字を 大文字にする |
(disabled) C-x C-u | U |
選択範囲の文字を 小文字にする |
(disabled) C-x C-l | u |
制御文字やタブ、改行を 入力する |
C-q *20 | i_CTRL-V *21 |
数字を増減する | M-x cua-mode → C-RET で選択 *22 → M-i, C-u [-数字] M-i |
CTRL-A CTRL-X *23 |
整形 (インデント)
整形 | Emacs | Vim |
---|---|---|
現在行を整形する | C-i | <<, >> i_CTRL-T, i_CTRL-D |
範囲整形 | C-M-\ (indent-region) C-x TAB (Shift+←→で操作可) |
= <, > |
指定した正規表現で 整形 |
M-x align-regexp [正規表現] | - |
インデントの幅 | EmacsWiki参照 | :set shiftwidth=[数字] |
スペースとTABの 変換 |
M-x tabify M-x untabify |
(Unixのみ)範囲選択して !unexpand -a !expand |
TABの幅 | (setq default-tab-width 4) 全バッファ (setq-default tab-width 4) ローカルバッファ |
:set tabstop=[数字] |
TABキーで スペース挿入 |
(setq indent-tabs-mode nil) | :set expandtab :retab (全体に反映させる) i_CTRL-V TAB (強制入力) |
TABキーで タブ挿入 |
(setq indent-tabs-mode t) | :set noexpandtab :retab! (全体に反映させる) |
空白文字
空白文字 | Emacs | Vim |
---|---|---|
空白文字表示 | M-x whitespace-mode | :set list :set listchars=eol:$,tab:>-,trail:\ (※空白表示記号は変更可) |
連続した空白文字を 一つにする |
M-SPC | 二つ目の空白文字でdw |
連続した空白文字を 削除する |
M-\ | diw |
行末の余分な空白文 字を削除する |
M-x delete-trailing-whitespace | - (置換で可) |
空白文字統計情報 | M-x whitespace-report | - (:%s/[空白文字パターン]/&/gn) |
;; 行末の半角スペースを表示 (mdの強制改行だけわかればよい等) ;; (setq-default show-trailing-whitespace t)
自動行折り返し
自動行折り返し | Emacs | Vim |
---|---|---|
自動行折り返し | M-x auto-fill-mode | :set textwidth=[数字] (オフ :set textwidth=0) |
桁数を指定する | C-x f [数字] | :set textwidth=[数字] |
指定した桁数で 折り返す |
M-q | 範囲指定して、gq gq[カーソル移動コマンド] |
Emacs misc
Emacsレジスタ
Emacsレジスタ | 説明 |
---|---|
C-x r SPC | 位置を登録 (point-to-register) |
C-x r w | ウィンドウの状態を登録 (window-configuration-to-register) |
C-x r f | フレームの状態を登録 (frameset-to-register) |
C-x C-k x | キーボードマクロを登録 (kmacro-to-register) ※Emacs 24.4 |
C-x r j | 位置、ウィンドウ、フレームおよびキーボードマクロを 復元/実行。(jump-to-register) |
C-x r x(s) | 文字列を登録 (copy-to-register) |
C-x r r | 短形領域を登録 (copy-rectangle-to-register) |
C-u [数字] C-x r n | 数字を登録 (number-to-register) |
C-x r g(i) | 文字列、短形領域および数字を挿入 (insert-register) |
C-u [数字] C-x r + | レジスタに登録した数字を増減する。(increment-register) |
M-x list-registers | レジスタ一覧 |
M-x view-register | レジスタ一覧 (ミニウィンドウ) |
部分編集
部分編集 | 説明 |
---|---|
C-x n n | 表示/編集領域を制限する (ナローイング:narrowing) |
C-x n w | 部分編集を元の状態へ戻す (ワイディング:widening) |
vi-mode
vi-mode | 説明 |
---|---|
M-x vi-mode | 起動 |
挿入関連コマンド | 終了 |
;; 抜けるのが簡単で気軽に使えるモード。
;; キーバインドしておいてCtlキーを押すのに疲れてきた時などに呼ぶと便利。
viper-mode
viper-mode | 説明 |
---|---|
M-x toggle-viper-mode | Viモード (トグル) |
M-x viper-mode | Viモード起動 |
M-x viper-go-away | Viモード終了 |
M-x viper-set-expert-level | Vi再現レベル直接指定 |
;; Vi再現レベル設定 ; (setq viper-expert-level [数字])
;; 本格的なパッケージが別にあり。
Emacs Lisp *24
Emacs Lisp | 説明 |
---|---|
M-x eval-expression (M-:) | ミニバッファからElisp実行 |
M-x eval-last-sexp (C-x C-e) | カーソルの前にあるElisp文を実行 |
M-x load-file | ファイルからElisp実行 |
Emacs その他コマンド
Emacs その他コマンド | 説明 |
---|---|
C-j | RET (electric-newline-and-maybe-indent) *25 (※24.3以前: RET+TAB (newline-and-indent) ) 注: lisp-mode時はElisp文の評価実行 (eval-print-last-sexp) |
C-M-j | コメントアウトして改行 (indent-new-comment-line) |
C-t | 前後の文字の入れ替え |
C-x C-t | 2つの行を入れ替える |
M-x customize-variable M-x customize-group |
設定カスタマイズ |
M-x re-builder | 対話的に正規表現の作成とテストを行う *26 |
コマンド以外
- C-- (M--) 効果を逆にする。(前方向に働く。負数にする。)
- disabled コマンド → このセッションのみ有効にするにはspaceで答える。
- パッケージ管理でアップデートして古いバージョンが残っていた場合はフォルダごと削除すれば可。
- 折畳みはc-modeなどhs-minor-modeが使用できる場合のみブロックの開け閉めが可能。
Vim misc
折畳み
折畳み | 説明 |
---|---|
zf | 折畳みを作成する |
za | 折畳みの開け閉め |
zd | 折畳みを削除する |
zE | ウィンドウ内のすべての折畳みを削除する |
zM | すべての折畳みを閉じる |
zR | すべての折畳みを開ける |
zi | 全箇所の閉じている折畳みの開閉切り替え (開いていた折畳みはそのまま) |
Vim その他コマンド
Vim その他コマンド | 説明 |
---|---|
:syntax on/off | シンタックスハイライト |
:set filetype | 現在の構文ファイル |
:TOhtml | 簡易HTML変換 |
:highlight | 色設定の確認 |
i_CTRL-O | 挿入モードで入力中に一時的に ノーマルモードのコマンド実行 |
:version | コンパイルオプションを確認する |
([数字]) K | カーソル位置のキーワードを調べる (初期設定はman) |
gf | カーソル位置の文字列をファイル名として開く (戻るときは、CTRL-O) |
CTRL-W gf | カーソル位置の文字列をファイル名としてタブで開く |
:source .vimrc | 設定ファイルを読み込み直す |
ノート類
環境
2015年2月〜3月
- OS X 10.10.2
- Emacs Mac Port版 24.4-mac-5.2
- MacVim 7.4 (KaoriYa 20150211) → 7.4 (KaoriYa 20150304)
- (Windows 10 TP 9926: NTemacs 24.4.1 *27、Vim 7.4.475 Kaoriya)
- (Ubuntu 14.04: Emacs 24.3.1 (24.4の機能は確かに動かず), Gvim 7.4.52)
- (OS X 10.10.2: ターミナル 2.5.1 (343.6) + Vim 7.3 (GUI環境の機能は確かに動かず) )
履歴
- 2014〜
- ブックマークの一部(特に個人ブログ)がアクセス不能になることが増えメモ化開始
- 2015-02-18 作成
- 2015-02-20 Windows 10 TP上で確認
- 2015-02-23 Ubuntu 14.04上で確認
- 2015-02-27 表で空欄になっていた箇所のいくつかにメモ追加
- 2015-03-02 cua-modeのM-b、M-oを修正
- 2015-03-04 ヘルプ、移動、レジスタ、ウィンドウおよびフレームを修正
- 2015-03-06 マクロを修正
- 2015-03-07 Emacsレジスタ、electric-indent-mode、マクロカウンターを追加
- 2015-03-08 C-j、マクロを修正
- 2015-03-09 移動、マークおよびマクロを修正
- 2015-03-10 フレーム、ウィンドウ、読み取り専用およびVim miscを修正
- 2015-03-11 外部コマンド/フィルタを修正
- 2015-03-12 cua-rectangle-mark-modeを追加
- 2015-03-18 外部コマンド/フィルタ、バイナリモード、ディレクトリ操作を修正
- 2015-03-20 OS X 10.10初期インストールのVim 7.3で確認
- 2015-11-11 Emacsのヘルプに正規表現の項目を追加
- 2016-06-21 Vimのプラグインの記述を削除
- 2016-06-30 コピー/貼り付け、ディレクトリ操作を修正
*1:アプリごとにモードが異なるのは面倒に感じることがあるので一長一短である。
*2:モード固有のキーバインドはそのモードにしてから実行することが必要。
*3:infoの読み方: http://qiita.com/l3msh0/items/8d855a52b4cacd3da5b4
*4:マッチしたもの自身で置換する(結果何も変わらず)。置換した回数が画面に出る。※ nを付けないと読み取りモードのときにエラーになる。
*5:英字レジスタはユーザー定義レジスタとして、マークやマクロ等に使用される。そのうち大文字レジスタはマークとマクロで扱いが異なる。マクロとして使用した場合は同小文字のレジスタに追加される。
*6:24.4からレジスタ登録や挿入等でのレジスタ名入力待ち時にプレビューされるようになった。
*7:書式設定する場合の例: 範囲選択後、!awk "{ print sprintf(\"\%3s\", NR) \".\" \$0 }"
または、!nl -b a -n rn -i 1 -s . -w 3
Emacs短形編集
;; C-x SPC (rectangle-mark-mode)時は、<backspace>、<delete>、C-w、M-w、C-y、M-yも利用可能。
;; M-x cua-rectangle-mark-modeで直接cua-modeの短形選択の開始。キーバインドの変更等の副作用なし。
;; (※C-dが効かないようだ。2015年3月時点)
;; cua-modeの短形編集をよく使っている場合は短形編集にすぐに入れるようになった。以上は24.4の機能。
;; 最終行は改行が必要
Emacs 短形編集 | 標準 | cua-mode |
---|---|---|
矩形領域を空白文字で置き換える | C-x r c (clear-rectangle) |
M-b |
矩形領域を削除する | C-x r d (delete-rectangle) |
C-d |
矩形領域分のスペースを挿入する | C-x r o (open-rectangle) |
M-o (Mac版でC-[ oが機能しない?) |
矩形領域を文字列で置き換える | C-x r t (string-rectangle) |
M-s M-f(一文字) |
矩形領域をキルリングに追加 | C-x r k (kill-rectangle) C-x r M-w (copy-rectangle-as-kill) |
C-w, C-x, s-x M-w, C-c, s-c |
キルリングの矩形領域を貼り付ける | C-x r y (yank-rectangle) |
C-y, M-y, C-v, s-v |
レジスタに矩形領域を登録する | C-x r r (copy-rectangle-to-register) |
C-x r r (copy-rectangle-to-register) |
登録したレジスタを挿入する | C-x r g(i) (insert-register) |
C-x r g(i) (insert-register) |
短形領域内を連番で埋める | - (削除とC-x r Nで手動) |
M-n (cua-sequence-rectangle) |
短形領域内の数字を増減する | - | M-i, C-u [-数字] M-i (cua-incr-rectangle) |
短形領域の範囲で置換する | - (通常の置換) |
M-r (cua-replace-in-rectangle) |
Vim範囲選択
Vim 範囲選択 | 説明 | サンプル |
---|---|---|
iw | 単語 (inner word) | 例: main |
aw | 単語、空白文字含む (a word) | 例: main[SPC] |
iW | 空白で区切られた単語 | 例: main.sub-some |
aW | 空白で区切られた単語、空白文字含む | 例: main.sub-some[SPC] |
ib,i( | カッコの内側の文字列 | (→ abcde ←) |
ab,a( | カッコを含めた文字列 | → (abcde) ← |
iB,i{ | ブロックの内側の文字列 | {→ abcde ←} |
aB,a{ | ブロックを含めた文字列 | → {abcde} ← |
it,at | HTMLタグ | 例: <h1>abcde</h1> |
di<カッコ> | カッコの中を削除 | 例: di(, di}, di[, di< |
Vimレジスタ補足
Vimレジスタ名 | 詳細 |
---|---|
0 | 最後にカット/ヤンクした文字列 |
[1–9] | カット/削除した文字列が1から順に格納されている。 |
[a–z] | ユーザ定義、マクロなど |
[A–Z] | 同小文字レジスタに追加される。(マークの場合を除く) |
% | 編集中のバッファのファイル名 |
# | 直前に開いたバッファのファイル名 |
* | シスムのクリップボード ※Yosemite標準のVim 7.3では無効(-clipboard) (例 "*p クリップボードから貼付け) |
/ | 直前の検索語句 |
: | 直前に入力したコマンド |
- | 削除した文字列(1行以下) |
. | 挿入モードにて入力した文字列 |
= | 計算式(数式、文字列、Vim変数、Vim関数)を入力 → pなどで貼付け |
" | 最後に使われたレジスタ |
" :reg 現在のレジスタの内容を表示
" :@" コピーした文字列をコマンドとして実行
" :put [レジスタ名], "[レジスタ名]p, i_CTRL-R [レジスタ名] レジスタの内容を貼付け
" :set clipboard=unnamed ヤンクした文字をクリップボードに入れる。
*11:C-uのマイナス指定とC--は同じ。Metaも同様。(負数の繰り返しを受け付けない操作の場合はエラーとなる)
*12:C-x C-k x レジスタにキーボードマクロを登録。C-x r j (jump-to-register)で呼び出し。(Emacs 24.4)
*13:シングルクォートかダブルクォートで囲むこと。マクロ内容は入力画面でCTRL-R {a-z}で貼り付けられる。
*14:外部モジュールを必要としないためWindows環境でもすぐに使える。
*15::Exploreと異なり、隠しファイルが表示されない。
*16:MacのTerminal上では動かないときがある? 2015年3月
*17:Windows XPでご覧になっている場合、縦棒二本の文字化けはMacのコマンドキーのマークです。
*18:https://www.gnu.org/software/emacs/manual/html_node/emacs/Saving-Emacs-Sessions.html
*19:MacVimは設定なしで終了位置を再現してくれる。他プラットフォームのGVimではリセットされてしまうようだ。
*20:OSによってはC-sで凍るので解除する時に使う。
*21:参考: http://d.hatena.ne.jp/zariganitosh/20150209/ascii_code_secrets
*22:非GUI環境ではM-x cua-set-rectangle-mark
*23:0が頭についていると8進数になる。:set nrformats+=alphaでアルファベットも増減。
*24:http://www.fireproject.jp/feature/uzumi/emacs/emacs_lisp.html
*25:Emacs 24.4からelectric-indent-modeがデフォルトでON。RETとC-mが改行+TAB。
*26:http://www.bookshelf.jp/soft/meadow_48.html#SEC705
*27:備考: init.elが存在しないと異常終了するようだ。