2009-06 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2009-06-30 (火)

Emacs講座 -第4回- カーソル移動 [Emacs講座]

目次 / 第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回

高速なカーソル移動は、エディタを使う上で重要なポイントになります。
上下左右以外の移動手段を無意識に使えるようになることが、高速化のコ
ツだと思います。

「emacs 雑記」の motion に触発されて書いてみましたが、かなりパク
リになってしまいました。

上下左右


- それぞれ、Ctrl-p, Ctrl-n, Ctrl-b, Ctrl-f に割り当てられています。
- 十字キーでも移動できますが、こちらの方がホームポジションからの距
  離が短いので効率が良いはずです。
- 前置き引数を付けると、「何文字だけ移動」とか「何行だけ移動」とか
  出来ます。

Ctrl-u Ctrl-f4 文字右に移動
Ctrl-u Ctrl-u Ctrl-n16 行下に移動
Ctrl-u 7 Ctrl-b7 文字左に移動

前の単語、次の単語


- それぞれ、Meta-b, Meta-f に割り当てられています。
- 英文だと正確に単語単位で移動しますが、日本語だと単語の区切りがお
  おざっぱです。ただ、通常の左右移動の高速版と考えると、かなり使えます。
- 私はそれぞれ、Ctrl-, と Ctrl-. に割り当て直しました。

行頭、行末


- 行頭は Ctrl-a と Home に、行末は Ctrl-e と End に割り当てられています。
- どちらもかかせません。

スクロールアップ、スクロールダウン


- スクロールアップは Ctrl-v と PageDown に、
  スクロールダウンは Meta-v と PageUp に割り当てられています。
- 一行だけスクロールしたい場合は、"Ctrl-u 1 Ctrl-v" や
  "Ctrl-u 1 Meta-v" のように前置き引数を付けます。もしくは、以下
  相当のものをキーに割り当てます。

(scroll-up 1)
(scroll-down 1)


- 私はそれぞれ Ctrl-;(一行スクロールアップ) と Ctrl-:(一行スクロー
  ルダウン) に割り当てました。

ウィンドウの上、中央、下


- ウィンドウの中央には Meta-r すると、移動できます。
- 前置き引数を付けると、ウィンドウの上や下にも移動できます。
  それぞれ、"Ctrl-u 0 Meta-r" と "Ctrl-u -1 Meta-r" です。もしくは、
  以下相当のものをキーに割り当てます。

(move-to-window-line 0)
(move-to-window-line -1)


- 私はそれぞれ、Ctrl-q Ctrl-p(上)、Ctrl-q Ctrl-l(中央)、
  Ctrl-q Ctrl-n(下) に割り当てました。

バッファの先頭、終端


- それぞれ、Meta-<, Meta-> に 割り当てられています。
- 実行するとマークセットしてしまうので、
  私は、以下相当のものをキーに割り当て直しました。

(goto-char (point-min))
(goto-char (point-max))



検索


- Emacs の検索はインクリメンタルサーチなので、移動手段としても重宝
  します。
- Ctrl-s で前方検索、Ctrl-r で後方検索が出来ます。それぞれ Ctrl-u
  を付けて実行すると、正規表現検索が出来ます。
- 検索中に Meta-e すると、非インクリメンタルな検索が出来ます。

migemo 検索


- ローマ字のまま日本語をインクリメンタル検索するためのツールです。
- 変換なしで日本語を検索出来るため、高速な移動手段となり得ます。

現在行の空白でない最初の文字まで移動


- Meta-m に割り当てられています。
- これは、行頭の空白を飛ばして最初に文字がくる部分に飛ぶ、という
  コマンドです。
- あらゆるプログラムではインデントして字下げをしますが、字下げされ
  たところに行きたいときに使用します。かなり必須です。

行番号を指定した移動


- キーには割り当てられていません。M-x goto-line を実行します。
- 目的の行番号が分かっている時は、この方法で移動します。

対括弧移動


- 対になっている括弧の一方から他方に飛ぶ移動です。
- "(" や "{" から、")" や "}" への移動は Ctrl-Meta-n 、その逆は Ctrl-Meta-p です。
- 文字列中の括弧を無視してくれる優れものです。
- 私はそれぞれ、Ctrl-q Ctrl-f と Ctrl-q Ctrl-b に割り当て直しました。

マークセットした場所に移動


- Ctrl-x Ctrl-x すると、Ctrl-space 等でマークセットした場所にカーソ
  ルを飛ばすことが出来ます。もう一度 Ctrl-x Ctrl-x すると、元の場所に
  戻ります。
- カーソル移動からは脱線しますが、M-x transient-mark-mode すると、
  リージョンに色が付きます。さらに Emacs22 の場合は Ctrl-space を
  2 回打つと、このモードになります。

前の関数、次の関数 (C or C++)


- 標準では用意されていないようですが、個人的に関数を自作し、
  "Ctrl-c Ctrl-[", "Ctrl-c Ctrl-]" に割り当てました。
- いつか紹介できるかもしれません。

grep 関連


- キーには割り当てられていません。M-x grep を実行します。
- ヒットした候補は、"Ctrl-x `" で順番にジャンプできます。
- もちろん、*grep* バッファ上で Enter してもジャンプできます。
  Emacs22 以降であれば、`n' や `p' で次の候補を別ウィンドウに開けます。
- 似た機能に以下のものがあります。

関数説明
M-x occur現在のバッファを検索します。
M-x grep-findfind と grep を使って検索します。

タグジャンプ


- ある程度の規模のソース群を探索する場合に便利です。
- キー操作は以下のとおりです。

キー関数説明
Meta-.M-x find-tagシンボルの定義部分に飛ぶ。
Meta-*M-x pop-tag-mark前の状態に飛ぶ。
なしM-x tags-searchシンボルを検索させる。
Meta-,M-x tags-loop-continue次の候補に飛ぶ。(検索状態で実行)
Ctrl-x 4 .M-x find-tag-other-window定義部分を別ウィンドウに表示。
Ctrl-x 5 .M-x find-tag-other-frame定義部分を別フレームに表示。
Meta-TABM-x complete-symbolシンボル名の補完(TAGS を読み込んだ状態で)
なしM-x visit-tags-tableタブテーブルを読み込み直す。

第4回終わり。

目次 / 第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回

2009-06 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

最終更新時間: 2017-04-30 20:45

検索
最近の話題
- 2017-04-29
  Docker ではないコンテナ systemd-nspawn を使ってみた
- 2017-04-16
  CircleCI 2.0 で capistrano デプロイしてみた
- 2017-04-15
  CircleCI 2.0 をローカルで実行できる circleci コマンドとは何者か
- 2017-04-13
  Rails リポジトリに CircleCI 2.0 を導入した
- 2017-04-08
  PS4 Pro と LG の 4K テレビ 43UH6500 で nasne は使えるのか?
- 2017-04-02
  オムロンの低周波治療器が肩こりにだいぶ効く
- 2017-03-21
  ローカル環境を出来るだけ Dockerize した
最近追記された記事
- 2017-04-29-1 (0日前)
- 2017-04-13-1 (14日前)
- 2017-04-13-1 (16日前)
- 2017-03-02-1 (58日前)
- 2017-02-25-1 (63日前)
- 2017-02-21-1 (67日前)
- 2015-06-07-1 (73日前)
- 2016-10-19-1 (82日前)
- 2016-01-01-1 (94日前)
- 2015-01-04-1 (103日前)
カテゴリ
- Anthy (3)
- Apache (11)
- Apple (1)
- ATOK (4)
- au (3)
- AWS (17)
- Bazaar (1)
- Berkshelf (2)
- BigQuery (1)
- BitBar (3)
- Book (85)
- Boxen (2)
- Bugsnag (1)
- C (26)
- capistrano (4)
- chalow (56)
- ChatWork (1)
- Chef (17)
- Chrome (3)
- Chromecast (1)
- CircleCI (10)
- Comics (2)
- Cooking (10)
- cvs (15)
- cygwin (12)
- D3.js (1)
- Debian (55)
- Docker (3)
- E-mail (8)
- elasticsearch (4)
- Emacs (219)
- Emacs講座 (10)
- English (4)
- feedforce (7)
- fetchmail (3)
- Firefox (20)
- Fluentd (4)
- ftp (1)
- Game (20)
- Gem (5)
- Git (9)
- GitHub (15)
- Go (5)
- Google (1)
- gpg (4)
- GrowthForecast (7)
- Health (3)
- Heroku (9)
- Homebrew (10)
- HTML (6)
- iBook (1)
- iPhone (15)
- IRC (1)
- Jenkins (8)
- JS (1)
- Karabiner (1)
- KeySnail (3)
- Kibana (1)
- Kindle (1)
- Langrich (7)
- LDAP (6)
- Life (19)
- Linux (6)
- Mackerel (1)
- Mew (18)
- MongoDB (1)
- Mozilla (19)
- Music (1)
- MySQL (1)
- NAS (4)
- nginx (6)
- NHK (1)
- Node (1)
- ntp (4)
- OOP (1)
- OpenID (2)
- openssl (1)
- Opera (2)
- OSX (41)
- Perl (14)
- PHP (19)
- PostgreSQL (1)
- procmail (4)
- Programing (3)
- Puppet (1)
- Python (2)
- Rails (12)
- Rake (2)
- RaspberryPi (1)
- RedHat (29)
- Redmine (3)
- Rspec (1)
- Ruby (48)
- samba (3)
- screen (7)
- sed (5)
- serverspec (6)
- sh (8)
- Slack (2)
- Solaris9 (22)
- Spring (2)
- ssh (4)
- StatusNet (21)
- svn (12)
- Swift (1)
- Tablet (1)
- tdiary (3)
- Twitter (14)
- Twmode (6)
- Ubuntu (5)
- UNIX (102)
- vagrant (8)
- Video (21)
- vim (1)
- Wercker (9)
- Windows (29)
- Wine (3)
- XML (11)
- XP (1)
- zsh (25)
- インストールメモ (33)
- クイックシェイプ (12)
- ネタ (15)
- 勉強会 (14)
- 携帯 (6)
- 正規表現 (4)
過去ログ
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
Google+