からぶん

メモ類

【古い情報】削除予定(旧 ‘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)

Emacs

  • helm: http://tuhdo.github.io/helm-intro.html
  • 画面端にきたら一行ずつスクロールするようにする。; init.el (setq scroll-step 1)
  • 標準機能のredoは不自由。
  • C-@、C-Shift-SPCを使うとSpotlightのキーは変えなくていい。

MacVim


※表記について
見やすさのため引数の表記を、鉤括弧で囲んで"[引数名]"としてある箇所がある。(正規表現や省略可否の意味とは異なる。) 例 :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短形編集の詳細を補足に示す。*8

" Vim範囲選択の詳細を補足に示す。*9

コピー/貼り付け

コピー/貼り付け 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

" Vimレジスタの詳細を補足に示す。*10

補完

補完 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 *27Vim 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 作成
    • メモとブックマークが乱雑になってきたのでMarkdownの練習を兼ねて一つにした
    • 標準機能の一覧 (拡張機能が便利なところは追記)
  • 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

*8:Emacs短形編集の詳細を以下に示す。

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)

*9:Vim範囲選択の詳細を以下にに示す。

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<

*10:Vimレジスタの補足を以下に示す。

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が存在しないと異常終了するようだ。