O(logN)のカーソル移動方法   2011年 元旦 竹辺靖昭
• あけましておめでとうございます。本年もよろ  しくお願いいたします。• 私の昨年の一大ニュース:  なんと、「情報処理」3月号にHaskellのイベント  の記事を書いてしまいました(^_^;)。  記事を書いてはみたものの、仕事ではHas...
• 問題: 画面上の目的の行にカーソルを速く移  動するにはどのような方法が考えられるか?• AからBに移動したい A                    B
• 方法1: 1行ずつ移動する• 問題点: 時間がかかってしまう   A Ctrl-n          Ctrl-f    B
• 方法2: 検索機能を使う• Emacsの場合  Ctrl-s => (^_^;) と入力  A                         B
• 検索機能を使った移動を推奨する人もいる• 10 Specific Ways to Improve Your Productivity  With Emacs (Steve Yegge氏)  http://sites.google.com/s...
• 検索機能を使う方法の問題点  他の場所にも同じ文字列があると引っかかっ  てしまう A                 「charset」を検                 索してもこれら                 に引っかかる  ...
• 改良案  移動する前に各行にユニークな文字列を挿  入しておく 問題点: 画面が狭くなってしまう
• さらに改良案  検索でマッチしている文字列の次の文字だけ  表示する ここで「f」を検索… A             B
• さらに改良案  検索でマッチしている文字列の次の文字だけ  表示する 「f」を検索中の状態 A             B
• さらに改良案  検索でマッチしている文字列の次の文字だけ  表示する 「ff」を検索中の状態 A             B
• わざわざ検索を使わなくてもバイナリサーチ  のように動けばよいのではないか?• ということで作ってみました
• 移動したいところが現在位置より上であれば  Alt+↑ 下であればAlt+↓を押す  (画面は初期状態) A             B
• 上または下の領域が2色に塗り分けられる• この場合はAから下が2色になる  (1回Alt+↓を押した状態) A             B
• 移動先が黄色ならばAlt+↑ 緑色ならばAlt+↓  を押す(2回Alt+↓を押した状態)• 2回のキー入力ですでに目的の行に到着 A                B
• Alt+↑/↓を押すたびに範囲が半分になるの  で任意の場所に移動できます  (3回Alt+↓を押した後の状態) A              B
• 結論: 64行までの表示であれば6回押せば目  的の行に到達できるので5行以上移動すると  きには便利です(^_^)/• https://github.com/beketa/binmove  Emacsユーザの方はこちらからbinmove....
Upcoming SlideShare
Loading in …5
×

O(logN)のカーソル移動方法

2,009 views

Published on

Published in: Entertainment & Humor
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,009
On SlideShare
0
From Embeds
0
Number of Embeds
538
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

O(logN)のカーソル移動方法

  1. 1. O(logN)のカーソル移動方法 2011年 元旦 竹辺靖昭
  2. 2. • あけましておめでとうございます。本年もよろ しくお願いいたします。• 私の昨年の一大ニュース: なんと、「情報処理」3月号にHaskellのイベント の記事を書いてしまいました(^_^;)。 記事を書いてはみたものの、仕事ではHaskell は全く使っていなかったので、その後、社内で も普及させるよう試みています。• ところで、今年はますますスピードが求められ る世の中になりそうですが、皆さんはどのよう にテキストエディタのカーソルを移動している でしょう?
  3. 3. • 問題: 画面上の目的の行にカーソルを速く移 動するにはどのような方法が考えられるか?• AからBに移動したい A B
  4. 4. • 方法1: 1行ずつ移動する• 問題点: 時間がかかってしまう A Ctrl-n Ctrl-f B
  5. 5. • 方法2: 検索機能を使う• Emacsの場合 Ctrl-s => (^_^;) と入力 A B
  6. 6. • 検索機能を使った移動を推奨する人もいる• 10 Specific Ways to Improve Your Productivity With Emacs (Steve Yegge氏) http://sites.google.com/site/steveyegge2/effective-emacs Item 4: Use incremental search for Navigation ... Whenever you need to jump the cursor backward or forward more than about 5 lines, and you can see the target location, you should be using i-search. ... 訳: 5行以上移動するときにはインクリメンタ ルサーチを使うべきである。
  7. 7. • 検索機能を使う方法の問題点 他の場所にも同じ文字列があると引っかかっ てしまう A 「charset」を検 索してもこれら に引っかかる B
  8. 8. • 改良案 移動する前に各行にユニークな文字列を挿 入しておく 問題点: 画面が狭くなってしまう
  9. 9. • さらに改良案 検索でマッチしている文字列の次の文字だけ 表示する ここで「f」を検索… A B
  10. 10. • さらに改良案 検索でマッチしている文字列の次の文字だけ 表示する 「f」を検索中の状態 A B
  11. 11. • さらに改良案 検索でマッチしている文字列の次の文字だけ 表示する 「ff」を検索中の状態 A B
  12. 12. • わざわざ検索を使わなくてもバイナリサーチ のように動けばよいのではないか?• ということで作ってみました
  13. 13. • 移動したいところが現在位置より上であれば Alt+↑ 下であればAlt+↓を押す (画面は初期状態) A B
  14. 14. • 上または下の領域が2色に塗り分けられる• この場合はAから下が2色になる (1回Alt+↓を押した状態) A B
  15. 15. • 移動先が黄色ならばAlt+↑ 緑色ならばAlt+↓ を押す(2回Alt+↓を押した状態)• 2回のキー入力ですでに目的の行に到着 A B
  16. 16. • Alt+↑/↓を押すたびに範囲が半分になるの で任意の場所に移動できます (3回Alt+↓を押した後の状態) A B
  17. 17. • 結論: 64行までの表示であれば6回押せば目 的の行に到達できるので5行以上移動すると きには便利です(^_^)/• https://github.com/beketa/binmove Emacsユーザの方はこちらからbinmove.elを ダウンロードすればお使いになれます

×