押す - みる会図書館


検索対象: 実践Vim : 思考のスピードで編集しよう!
121件見つかりました。

1. 実践Vim : 思考のスピードで編集しよう!

第 2 章ノ ーマルモード オペレータ待機モード ノーマルモード、挿入モード、ビジュアルモードはすぐにわかるが、 Vim にはこ 54 Vim のボキャブラリーが拡張できるというわけだ。 で、カスタムオペレータやカスタムモーションを作れるのであり、これによって ゲットとするカスタムマッピングを作れるからだ。言い換えると、これのおかげ よい質問だ ! それは、オペレータ待機モードを開始する、あるいはそれをター 名前空間的なコマンドは単なるノーマルモードの拡張だというのはなせだろう ? び出すほんのわずかな瞬間のためにだけに使われるモードがあるのに、その一方で こんなふうに思うかもしれない。オペレータコマンドとモーションコマンドを呼 待機モードが開始されるのは、オペレータコマンドだけだ。 コマンドマッピングの数を拡張する名前空間と考えることができる。オペレータ ではオペレータ待機モードは開始されない。そうではなく、これらは利用可能な に次のキーストロークのプレフィクスとして機能するだけだ。そうしたコマンド :h [ ◎⑩を検索してみよう ) 。でも、多くの場合は、最初のキーストロークは単 ( どんなものがあるか知りたければ、 :h gO ◎、 :h z ◎◎、 :h Ctr1-wO ◎、 2 つあるいは 3 つのキーストロークによって起動されるコマンドはたくさんある モードに戻れる。 ( これにより、その操作が中止される ) を押すといういつものやり方でノーマル では何も起こらない。オペレータ待機モードがアクティブなときには、匡司キー このモードがアクティブになり、操作を完了させるようなモーションを与えるま ンコマンドだけを受け付ける状態のことだ。オペレータコマンドを呼び出すと、 Vim を有限状態機械 (FSM) として考えると、オペレータ待機モードはモーショ てしまう ! キーを押してから w キーを押すまでのほんのわすかな時間だ。瞬きしてたら見逃し 行するときには、このモードを呼び出している。このモードに滞在するのは、 d れども、このモードはほんの一瞬で終わってしまう。たとえば、 dw コマンドを実 機モード (Ope 「 ato 「 -Pending mode) だ。 1 日に何十回とこのモードを使うけ のほかにも気がつきにくいモードがある。その典型といえるのが、オペレータ待

2. 実践Vim : 思考のスピードで編集しよう!

RTFM (Read the Forgotten Manual) く か骨が折れることだが、慣れるにつれて上達するだろう。 和音を鳴らす すものもあるが、この表記法ではこれらもうまく表現できる。以下の例を見てほしい。 もこの記法が使える。 Vim のコマンドのなかには、和音とキーストロークを順番に押 使っているし ( : h key-notation ◎⑩ ) 、カスタムのキーマッピングを定義するのに 理由もなく、この記法を選んだわけではない。 Vim のドキュメントでこの表記を を同時に押す」ことを意味する。 し・・・・・・」ということではない。第という表記は↓と同じ、つまり、「朝と日 のなどのキーストロークが現れても、これは鳶を押し、 0 を押し、そして ; を押 表記 C-w> く C- 意味 て 1 ミとを同時に押す を押したあとに、いとーを同時に押す $Ct て 1 と第を同時に押したあとに、 0 を押す trl とを同時に押したあとに、 t て新とトを同時に押す プレースホルダ Vim のコマンドの多くでは、複数のキーストロークを順番に入力する必要がある。 コマンドのなかには、それに続けて特定のキーストロークを入力しなければならない ものもあるし、キーポードの任意のキーを続けて入力できるコマンドもある。コマン ドのあとに入力可能なキーストロークを示すのに、本書では { } を使用する。以下はそ の例だ。 表記 4 ( OtiO Ⅱ 意味 まを押して、そのあとに任意の文字を続ける ーを押して、そのあとに任意の小文字を続ける 量を押して、そのあとに任意の大文字小文字を続ける 4 を押して、そのあとに任意のモーションコマンドを続ける ' ーをと第を同時に押して、そのあとにレジスタのアドレスを続ける 17

3. 実践Vim : 思考のスピードで編集しよう!

RTFM (Read the Forgotten Manual) 特殊キーの表示 キーのなかには、名前で呼ばれるものもある。以下の表にそれらのキーをいくつか 示そう。 表記 く ESC <Ctr1* <Tab く Shift く S—Tab く DOWII 意味 スペースパー ( [ 匚」 ) を押す 下矢印キー (CV) キー) を押す 上矢印キー ( ①キー ) を押す ks ft ゝキーと fTa いキーを同時に押す Shift キー ( [ $ 通 ] キー ) を押す Tab キー ( 區司キー ) を押す control キー ( [ 0 キー ) を押す キャリッジリターンキーを押す ( 別名 : fEnter>) Escape キー ( [ ] キー ) を押す スペースパーをこで表しているのに注意。これは、 cha 發コマンドと組み合わせて ( 次の半角スペースまでカーソルを移動 ) のような表記をするのに使うことがある。 コマンドの途中におけるモードの切り替え Vim を使っていると、ノーマルモードと挿入モードの間でのモード切り替えが頻繁 に行われる。現在アクテイプなモードによって、キーストロークの意味が異なること もある。ノーマルモードのキーストロークと簡単に見分けがつくように、挿入モード で入力されたキーストロークを表現するのに上記とは異なる形式を本書では使用して いる。 「 ggreplacement く Esc> 」という例を考えてみよう。ノーマルモードのコマンドによ りカーソル位置からそこにある単語の末尾までが削除されたところで挿入モードへ切 り替わる。そして、挿入モードで「 replacement 」という語を入力したところで、き朝 を押してノーマルモードに戻っている。 ノーマルモードの表記方法はビジュアルモードでのキーストロークの表記にも使っ ている。一方、挿入モードの表記方法はコマンドラインモードおよび置換モードで入 力されるキーストロークを表現できる。どのモードがアクテイプかは文脈からわかる はずだ。

4. 実践Vim : 思考のスピードで編集しよう!

第 4 章ビジュアルモード アルモードは非常に特殊なものなので、これについては TIP24 ( 75 ページ ) 、 TIP25 ( 77 ページ ) 、 TIP26 ( 78 ページ ) で詳しく解説をしよう。 ビジュアルモードの有効化 キーがビジュアルモードへの入口だ。ノーマルモードでをを押す一 とで、文字指向 ( [ 0 キーと一緒に押す ) ことで有効になる。これらのコマンドを以下の表にまとめる。 と一緒に押す ) ことで有効になる。プロック指向のビジュアルモードは 50 : 盻を押す のビジュアルモードが有効となる。行指向のビジュアルモードは立を押す ( [ 囮キー コマンド 結果 文字指向のビジュアルモードを有効にする 行指向のビジュアルモードを有効にする プロック指向のビジュアルモードを有効にする 直前のビジュアルな選択範囲を再度選択する コマンドはかなり使えるショートカットだ。これは、ビジュアルモードで直前に 選択したテキスト範囲を再度選択する。直前に行った選択が文字指向か、行指向か、 プロック指向かに関係なく、コマンドはまったく同じ選択操作を行う。直前の選択 範囲がすでに削除されているときには、驚くことにるかもしれない。 ビジュアルモード間の切り替え ノーマルモードからピジュアルモードへ切り替えるのと同じ方法で、 3 つのビジュ アルモード間の切り替えも行える。文字指向のビジュアルモードからは、意を押せば行 指向のビジュアルモードに、三でプロック指向のビジュアルモードに切り替えら れる。ただし、文字指向のビジュアルモードでを押すと、ノーマルモードに切り替わ る。よって、をキーはノーマルモードと文字指向のビジュアルモードを切り替えるトグ ルだと考えられる。立キーと起 ~ もノーマルモードとそれぞれに対応するビジュアル モードをトグルする。メもしくはイを押せば ( 挿入モードから抜けるのと同じ く ) ノーマルモードに戻れるのはもちろんのことだ。ビジュアルモードを切り替える コマンドを以下の表にまとめておこう。 68

5. 実践Vim : 思考のスピードで編集しよう!

RTFM (Read the Forgotten Manual) るドキュメントへのハイバーリンクだ。 誌面で Vim の操作を再現するための記法 Vim にはモードがある。このユーザーインターフェイスは、 Vim を他のテキストェ デイタから際立たせるものだ。音楽的な比喩をするために、 QWERTY キーポードと ピアノの鍵盤を比較してみよう。ピアニストは一度に 1 つの音程を鳴らすことでメロ ディを奏でたり、あるいは、一度に複数の鍵を押し込むことで和音を鳴らしたりでき る。たいがいのテキストエデイタでは、 1 つ以上の修飾キー ( 〔 0 キーや〔 0 亟司キー など ) を押しながら何かのキーを押すことで、キーボードショートカットが発動され る。これは、 QWERTY キーポードにおいては、ピアノの鍵盤で和音を鳴らすのと同 じ操作になる。 Vim のコマンドのなかには、和音を鳴らすのと同様に複数のキーを一度に押すこと で呼び出されるものもあるが、ノーマルモードのコマンドは連続するキーストローク を入力するように設計されている。これは、 QWERTY キーポードにおいては、ピア ノのキーボードでメロディを奏でるのと同じ操作になる。 0 朝一トは和音的なキーポードコマンドを表す一般的な表記であり、これは「 0 キー とキーを同時に押す」ことを表している。ただし、この表記法は、 Vim のモーダルな コマンドセットを表現するには十分ではない。以下では、本書を通して、Ⅵ m の使い 方を示すための表記法を紹介していく。 メロディを奏でる ノーマルモードでは、 マンドを組み立てる。 これらのコマンドは次のように表記する。 1 つ以上の連続するキーストロークをタイプする こと 0 、 コ 表記法 ま 意味 ふトを順に押す 4 朝を順に押す まを一度押す これらのシーケンスの大半は 2 つか 3 つのキーストロークだが、もっと長くなるこ ともある。 Vim のノーマルモードのコマンドシーケンスの意味を解読するのはなかな

6. 実践Vim : 思考のスピードで編集しよう!

第 6 章複数ファイルの管理 :sp[lit] {file} :vsp[lit] {file} コマンド C-w> C-w> 動作 現在のウインドウを水平分割し、現在のバッフアの内容を新しいウイン ドウでも利用する 現在のウインドウを垂直分割し、現在のバッフアの内容を新しいウイン ドウでも利用する 現在のウインドウを水平分割し、 { file } を新しいウインドウに読み込む 現在のウインドウを垂直分割し、 { file } を新しいウインドウに読み込む ウインドウ間のフォーカスを変更する 分割ウインドウの間でフォーカスを切り替えるためのコマンドにはいくつかある。以下 の表に代表的なものをまとめる ( すべてのコマンドについては→ : h window-move-cursor ①◎ ) 。 コマンド 動作 オープンされているウインドウでフォーカスを順次切り替えていく 右のウインドウにフォーカス 上のウインドウにフォーカス 下のウインドウにフォーカス 左のウインドウにフォーカス 実際にはミ > く c ーのは 5 と同じ動作をする。つまり、、朝キーを押したま ま、を押す ( かなど表に示したキーを押す ) とアクテイプなウインドウが切り替わ る。 - を押すよりも、、のを押すほうが簡単だ。文字にしてみると、こっ ちのほうがめんどうくさそうだ。それはそうと、分割ウインドウを使いまくるように なると、これらのコマンドをもっと便利なキーにマッピングしたくなるかもしれない。 ターミナルがマウス操作を受け付けるか、 GVim を使っている場合には、マウスク リックによってアクテイプなウインドウを切り替えられる。これがダメなときには、 「 m 。 use 」オプションがきちんと設定されているかをチェックしてみよう ( → :h 'mouse' ⑩① ) 。 126

7. 実践Vim : 思考のスピードで編集しよう!

TlP4 : 実行して、繰り返して、元に戻すく T 旧 4 : 実行して、繰り返して、元に戻す 繰り返し作業にぶち当たったときには、モーションと変更の両者を繰り返し可 能なものにすることで、最適な編集方針を打ち立てられる。 Vim にはこれを うまくやるための天賦の才が備わっている。 Vim は行われた操作 ( アクショ ン ) を覚えて、最も共通的なものを、指一本で触れるところに保存しておい てくれるので、いとも簡単にその操作を再現できる。ここでは、 Vim で繰り 返しが可能な操作を紹介し、それを元に戻す方法も説明しよう。 ドットコマンドが直前の変更を繰り返すのはすでに見た。操作の多くが変更とみな されることで、ドットコマンドはいろいろなことに使えるというわけだ。だが、コマ ンドによっては、これとは別の方法で繰り返せるものもある。たとえば、、は任意の Ex コマンドを繰り返すのに使える ( これについては、 96 ページの TIP31 で説明する ) 。 あるいは、直前の :substitute コマンドにれ自体も Ex コマンドだ ) ををを押すこと で繰り返せる ( 289 ページの TIP92 を参照 ) 。 毎回毎回、同じキーストロークをすべて記述することなしに、操作を繰り返す方法 を身につければ、作業効率をもっと高められる。ますは実行してみて、そして、それ を繰り返すんだ。 だけど、ほんの少しのキーストロークでたくさんのことができるので、足を掬われ ないようにしなきゃいけない。コマンドを暴発させるのだって実に簡単だ。 j 言蔔 : と キーをタタタタタタンツと何度も何度も叩くのは、ドラムの連打みたいだ。間違って、 」キーを 2 回続けて叩いたらどうなるだろう。いや、一だったら、もっと悲惨だ。 操作 ( アクション ) やモーションを簡単に繰り返せる状況ではいつも、間違ってや りすぎたのを元に戻す何かの方法が用意されている。ドットコマンドの場合、直前の 変更を元に戻すには、いつだってキーを叩けばよい。な : ) コマンドを使ったあと で一を叩きすぎると、目標を通りすぎることになる。けど、一キーを押せば戻れる。 れは直前の一な検索を逆方向に繰り返すコマンドだ ( 159 ページの TIP49 を参照 ) 。 リバースギアがどこにあるかを覚えておくと、間違っていきすぎたときに、役に立 つ。これは世の常。表 1 ー 1 に Vim の繰り返し可能なコマンドと、それと対になる操 作 ( 逆方向への検索やアンドゥ ) をまとめておこう。ほとんどの場合に使うのはアン ドゥコマンドだ。冒キーがすつごくすり減っているのも当たり前だね。 33

8. 実践Vim : 思考のスピードで編集しよう!

TlP34 : 履歴からコマンドを呼び戻すく コマンドラインウインドウは、一般的な Vim のバッフアに似ていて、各行には履歴 に含まれる各要素が表示される。第キーと」キーで履歴を前後に移動できるし、 Vim の 検索機能を使ってコマンド履歴の検索もできる。 CR > キーを押せば、カーソル行の内 容が Ex コマンドとして実行される。 Vim にはモードがあり、その編集機能は強力だ。そして、コマンドラインウインド ウを使うと、この強力な編集機能をフルに活用してコマンド履歴に手を加えることが できる。これが、コマンドラインウインドウの利点だ。ノーマルモードで使い込んだ モーションコマンドを何でも使って行を移動できるし、ビジュアルモードで選択した範 囲に対して何かをしたり、挿入モードに切り替えたりもできる。コマンドラインウィ ンドウの内容に対して、 Ex コマンドを実行することだってできるんだ ! 虹を押してコマンドラインウインドウを召喚したら、さっきの問題は以下のように して解決できるだろう。 キーストロークバッフアの内容 {start} U<Esc> urite ! ruby % write ! ruby % write ー !ruby % date ー ! ruby % : s/write/update fC を押すと、「 :update ー !ruby % 」コマンドがコマンドラインに入力されたかの ように、実行されるだろう。 コマンドラインウインドウが表示されている間は、カーソルは常にそこに存在する。 つまり、コマンドラインウインドウを閉じる以外には、他のウインドウに切り替えるこ とはできない。コマンドラインウインドウを閉じるには : q コマンドを実行するか ( こ れは、通常の Vim ウインドウと同じ ) 、を押すだけだ。 コマンドラインウインドウでく CR> を押すと、アクテイプなウインドウの内容に対し てコマンドが実行されることには注意しよう。ここでいう「アクテイプなウインドウ」 とは、コマンドラインウインドウが召喚される前にアクテイプだったウインドウのこと だ。コマンドラインウインドウが表示される前に、どのウインドウがアクテイプだっ たかを Vim は教えてくれたりはしないから、分割ウインドウを使っているときには、 どれがアクテイプだったかに注意すること。 103

9. 実践Vim : 思考のスピードで編集しよう!

T 旧 112 : 自動補完のポップアップメニューを操作するく ドキュメントを変更しないで単語リストをブラウズする : ミを押すと、ポップアップメニューが更新され、リストの次の要素が選択され る。ただし、ドキュメントのテキストは変更されない。、キーとのキーを使っ て、使いたい単語がみつかるまでポップアップメニューに表示された単語リストをス クロールできる。そして、キーを叩くか、起当を押すと、ドキュメントにそれ が挿入される。 単語リストをスクロールするたびにドキュメントも更新する 上記とは対照的に、、メキーはリストから次の単語を選択するだけではなく、選択 された単語を使ってドキュメントの更新も行う。これはつまり、ポップアップメニュー で選択されている要素とドキュメントのテキストが常に同期しているため、を押 して選択を確定する必要はないということだ。リストから単語を選択したら、タイプ 入力を続けるだけで、ポップアップメニューが消える。 筆者はミと如ゝのほうがとよりも好みだ。これにはいくつかの理 由がある。起メとのミなら、ホームボジションから指を動かさなくても済むし、ド キュメントにテキストが自動的に挿入されるからや ~ を押さなくても選択が 確定できる。 TIP46 ( 151 ページ ) で見たマントラをここでもう一度。「自分の指はホー ムボジションから外さない」だ。 すべての選択を消去する 自動補完メニューを呼び出したら、これをもう一度消去したくなるかもしれない。 たとえば、リストに候補がありすぎて、単語を手入力したほうが速いとか。自動補完 は当を押すことで終了でき、これにより、ポップアップメニューが消え、カーソル の前のテキストが自動補完を起動する前に入力したところまで戻される。 357

10. 実践Vim : 思考のスピードで編集しよう!

TlP34 : 履歴からコマンドを呼び戻すく 引 P34 : 履歴からコマンドを呼び戻す 私達がコマンドラインで入力したコマンドを Vim は覚えていてくれる。そし て、それらをコマンドラインに呼び戻す方法を 2 つ用意している。 1 つは過 去のコマンドラインをカーソルキーでスクロールする方法。もう 1 つはコマ ンドラインウインドウで呼び出す方法だ。 コマンドラインモードで自分が何をしたのか、コマンドラインは履歴 ( ヒストリ ) を 取ってくれている。以前に実行したコマンドを簡単に呼び戻せるので、長々とした Ex コマンドを一度入力したら、そのあとは同じコマンドをもう一度入力し直したりする 必要はない。 ます一キーを押してコマンドラインモードに切り替えよう。プロンプトには何も入 力しないまま、きト矢印キーを押す。コマンドラインには、直前に実行した Ex コマ ンドが表示されるはずだ。、発当キーをもう一度押すと、 Ex コマンドの履歴をさらに 遡れるし、 6 ミキーを使えば順方向に履歴を辿れる。 では、 : help と入力してから、キーを押してみよう。やはり以前に実行した Ex コマンドの履歴を遡るはずだが、今度はすべてが表示されるのではなく、 help で始ま る Ex コマンドだけが含まれるようにフィルタリングされている。 デフォルトでは、 Vim は最後の 20 個のコマンドを記録する。いまどきのコンピュー タではメモリは安価なものになっているので、 hist 。 ry オプションを変更して、この上 限をもっとたくさんにしても問題はないだろう。 vimrc に以下の行を追加してみよう。 set history=200 記録される履歴はいま行っている編集作業のものだけではない。Ⅵ m を終了してか ら再起動しても、履歴が保存されている ( → :h viminfoOO)0 履歴に記録される要 素数を増やせば、もっと便利に使えるようになるだろう。 Ex コマンドの履歴を記録するだけではなく、 Vim は検索の履歴も別途記録してく れる。 / を押して検索プロンプトを表示したときも、きキーと 9 鷓 ~ キーを使って 以前の検索の履歴を辿れる。つまり、検索プロンプトとは、もう 1 つのコマンドライ ンモードなんだ。 101