方法 - みる会図書館


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

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

TlP21 選択モード : ビジュアルな選択範囲の定義く 普通のテキスト編集環境では、選択されたテキストは、印字可能な文字を何か入力 すると削除される。 Vim のビジュアルモードはこの作法には従っていない。しか し、選択モードはこの作法に従う。 Vim に組み込みのドキュメントによれば、これ は「 Mic 「 osoft Windows の選択モードに似ている」そうだ ( → :h Se1ect-mode ◎◎ ) 。印字可能な文字によって、選択範囲が削除され、 Vim が挿入モードへと 切り替わり、そこで入力された文字が挿入される。 く c ー g > を押すと、ビジュアルモードと選択モードをトグルできる。見た目の違い は、画面最下部に表示されるメッセージだけで、「一一 VISUAL ーー」 ( 「一一ビジュア ルーー」 ) と「一一 SELECT ーー」 ( 「一一セレクトーー」 ) が切り替えて表示される。た だし、選択モードで印字可能な文字を何か入力すると、選択範囲がその文字で置 き換えられ、挿入モードに切り替わる。もちろん、ビジュアルモードでとキーを 使って選択範囲の内容を変更することも可能だ。 モードがあるという Vim の特性が大好きならば、選択モードに使い道を発見する ことはまずないだろう。このモードは、他のテキストエデイタと同じように Vim を使いたい人をつなき止めておくものだ。筆者的には「ここは選択モードの出番 だ」という場面は 1 つしか思い浮かばない。 TextMate のスニペット機能を工 ミュレートするプラグインを使っているときがそうだ。この場合、選択モードに すると、アクティブなプレースホルダが強調表示される。 T 旧 21 : ビジュアルな選択範囲の定義 ビジュアルモードには 3 つのサブモードがあるが、これらはそれぞれ異なる 種類のテキストを扱う。ここでは、サブモードを有効化する方法と、サブモー ド間を切り替える方法を見ていこう。 Vim には 3 種類のビジュアルモードがある。文字指向のビジュアルモードでは、任 意の 1 文字を起点として、その行中の文字範囲あるいは複数行にまたがる文字範囲のな かから任意の部分を選択できる。個々の単語あるいはフレーズのレベルで操作を行う ときにはこのモードが適している。行全体を操作したいのなら、文字指向のビジュア ルモードよりも行指向のビジュアルモードのほうが便利だ。最後に、プロック指向の ビジュアルモードでは、ドキュメント中の矩形領域を扱える。プロック指向のビジュ 67

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

RTFM (Read the Forgotten Manual) ー、 :verslon VIM ー Vi IMproved 7.3 ( 2010 Aug 15 , compiled Sep 18 2011 16 : 00 : 17 ) Huge version with MacVim GUI . Features included ( + ) 0 て not ( ー ) : 十 arabic 十 autocmd 十 ba1100 Ⅱー eval 十 browse + builtin—terms 十 byte_offset + cindent + clientserver + clipboard + cmdline—compl + cmdline_hist 十 cmdline_info 十 comments 最近のコンピュータでは、 huge 機能セットよりも少ない機能セットを使用する理由 はどこにもない ! ターミナルか GUI か、どっちにする ? 伝統的に、 Vim は、 GUI を持たないターミナル内で実行されるものだ 。っいって もよいだろう。 Vim は TUI (Textual User lnterface) を持っていると。 1 日の大半を コマンドラインを使って過ごしているのなら、これはすごくよく手に馴染むと思う。 GUI べースのテキストエデイタに飼い慣らされている方には、 GVim ()S X なら MacVim) が Vim の世界との架け橋となってくれるだろう ()h guiOO)0 GVim は 構文の強調表示用にターミナルバージョンよりも多くのフォント / 色をサポートして いる。マウスも使える。 OS 固有の作法も一部尊重されている。たとえば、 MacVim で は、 0 はキー、第キーを使ってクリップポードを扱ったり、朝第きキーでドキュ メントを保存したり、 0 キーでウインドウをクローズしたりできる。 Vim に慣れ ていない間はこれらを使おう。ただし、常にもっとよい方法があることは覚えておく 本書が目的としている範囲では、 Vim をターミナルで実行しても、 GVim として実 行しても、どちらでもかまわない。本書では、 Vim でも GVim でも機能するコアなコ マンドを対象としている。第 1 章 Vim のやり方で何かをする方法を学んでいこう。 24

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

第 16 章 ctags を使ってソースコードのインデックス を作成し、ナピゲーションを行う ctags は、コードベースを走査し、キーワードのインデックスを生成する外部プロ グラムだ。もともとは Vim に組み込まれていたのだが、 Vim のバージョン 6 のリリー スとともに、 ctags は独立したプロジェクトになった。その歴史が残したものは、 Vim と ctags の緊密な結びつきのなかに見て取れる。 Vim の ctags サポートは、関数やクラスの定義へ迅速にジャンプして、コードベー ス内をナビゲーションできるようにしてくれている。 TIP103 ( 326 ページ ) では、この 方法を見る。もう 1 つのメリットとして、 ctags からの出力を使って、自動補完用の単 語リストを生成できる。 これについては「タグファイル」 ( 360 ページ ) で見てみよう。 タグナビゲーション、タグの自動補完が機能するのは、最新のインデックスファイ ルがどこにあるかを Vim が知っているときだけだ。 TIP102 ( 323 ページ ) では、 ctags と連携するように、 Vim を構成する方法を説明する。でもその前に 、 ctags のインス トール方法と実行方法を見てみよう。 引 P101 : ctags とは Vim のタグナビゲーション機能を使うには、最初に ctags をインストールす る必要がある。次に、プログラムの実行方法を知り、これが生成するインデッ えば、 Ubuntu では、以下を実行することで ctags をインストールできる。 Linux ユーザーはパッケージマネージャを使えば ctags を取得できるはすだ。たと Exuberant Ctags のインストール クスについても理解する必要がある。 319

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

第 8 章 モーションによるファイル内の移動 151 法を身につけよう。そうすれば、 Vim をよりテキパキと使えるようになる。 いる。自分の手をホームボジションから離さないままカーソルを移動する方 Vim は、タッチタイプをする人にとって最高に使いやすくなるようにできて T 旧 46 : 自分の指はホームボジションから外さない とを目標としよう。 ◎を参照してほしい。毎週、いくつかのモーションを自分のレバートリーに加えるこ 理なので、すべてのリファレンスについては Vim のドキュメントで : h motion. txtO Vim にはたくさんのモーションがある。本章でそれらのすべてを取り上げるのは無 クトだ。これについては TIP51 ( 166 ページ ) 、 TIP52 ( 171 ページ ) で取り上げよう。 紹介していく。オペレータ待機モードでぜひとも見ておきたいのがテキストオプジェ た。本章では、全体を通して、モーションとオペレータコマンドを組み合わせる例を モードで、何かをするためにも使える。これについては、 TIP12 ( 51 ページ ) で説明し モーションはドキュメント内を移動するためだけのものではない。オペレータ待機 では検索コマンドで移動する方法を見ることにしよう。 ( 159 ページ ) では現在行で狙った文字にピタッと移動する方法を、 TIP50 ( 164 ページ ) する方法もある。 TIP48 ( 156 ページ ) では単語単位の移動を一度で行う方法を、 TIP49 に動かせる。次の TIP46 ではこれを見る。基本はこれだけど、もっとサクサクと移動 うことだ。 Vim では、ホームボジションから手を離さなくても、カーソルを上下左右 ドキュメント内を移動する最もシンプルな方法といったらたぶんカーソルキーを使 のに使えるモーションに焦点を当てていこう。 ファ間を移動するためのコマンドも多数ある。本章では、ドキュメント内を移動する Vim には、ドキュメント内を移動するためのコマンドがたくさんある。さらに、バッ

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

第 13 章 検索 前章では、 Vim の正規検索エンジンについて学んだので、本章では検索コマンドで これらをどう活用するかを見ていこう。最初は基本から。検索の実行の仕方、マッチ を強調表示する方法、マッチ間をジャンプする方法だ。次に、 Vim のインクリメンタ ルサーチ機能を使ううえでのテクニックをいくつか。インクリメンタルサーチは、そ の場その場でのフィードバックを与えてくれるだけではなく、マッチを自動補完して くれるのでタイプ量も減らせる。ドキュメント中に存在するマッチの数を数える方法 も説明する。 検索オフセット機能を使うと、カーソルをマッチから相対的に移動させられる。や りたいことをピタリと実現するのに検索オフセットが役立つ状況を 1 つ見てみよう。 それから、検索マッチ全体に対して処理を行うための検索オフセットの使い方を見る。 正規表現を組み立てる一一一そして、正しい正規表現にする一一には実験が何度か必 要になることがよくある。重要なのは、パターンを何度も反復できるような、作業の 進め方を確立することだ。これを行う方法を 2 つ紹介する。 1 つは、検索履歴の呼び 出し。もう 1 つはコマンドラインウインドウの活用だ。 ドキュメント内にすでに存在しているテキストを検索する簡単な方法があればなあ、 と思ったことがあるだろうか ? 最後にちょっとしたカスタマイズを行い、 * コマンド を上書きして、現在のビジュアルな選択範囲を検索するコマンドを作ってみよう。 T 旧 79 : 検索コマンドを使ってみよう ここでは、検索方向の指定、直前の検索の繰り返し ( あるいは逆方向への検 索 ) 、検索履歴の活用など、検索コマンドの基本的な使い方を取り上ける。 259

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

第 1 1 章 マクロ Vim には変更を繰り返し行う方法がいくつかある。ドットコマンドについてはすで に紹介した。ドットコマンドは、ちょっとした変更を繰り返すのには便利に使える。 が、もっとたくさんの変更を繰り返したいのであれば、 Vim のマクロに手をつけるべ きだろう。マクロを使うと、いくつものキーストロークをレジスタに記録しておいて、 あとから、それらを再生できる。 似たような内容を記述している行や段落ーーーファイルでもよい - ーーが複数あり、そ れらに対して変更を繰り返すときにはマクロが最適だ。変更したいものがたくさんあ り、それらに対してマクロを実行するには 2 つの方法ーーマクロを直列に再生するか、 があることを、本章では見ていこう。そして、どんなと 並列に複数回実行するカ きに、どちらの方法を使うかについても説明しよう。 コマンドのシーケンスを記録するときには、常にミスを冒す可能性がある。でも、 失敗したものを捨てる必要はない。一度作成したマクロの末尾には、簡単にコマンド を追記できる。もっと大々的に修正をするときにも、マクロをドキュメントに貼り付 けて、コマンドのシーケンスを編集して、それをレジスタにヤンクすればよい。 テキストに連続する数字を挿入する必要がある場合がある。 TIP66 ( 217 ページ ) で は、簡単な Vim スクリプトと Expression レジスタを組み合わせて、これを行う方法 を紹介する。 オセロゲームと同じで、 Vim のマクロは覚えるのは簡単でも、一生をかけてマスター していくものだ。初心からエキスパートに至るまでのすべての人が、作業を簡単に自 動化してくれるこの機能の恩恵を受けられる。 211

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

TP102 : ctags と連携するように Vim を構成するく バージョン管理システムのフックを使って ctags を自動実行する ほとんどのソースコード管理システムでは、リポジトリのイベントに対応してスクリ プトを実行するのに使えるフックが提供されている。これらのフックを使って、コー ドをコミットするたびに、レポジトリのインデックスを再作成するようにソースコー ド管理システムに伝えられる。 「 EffortIess Ctags with Git*5 」において、 Tim pope は post-commit 、 post-merge 、 post-checkout の各イベントのフックの設定方法を示している。この方法のよいとこ ろは、グローバルなフックを使うことで、自分のシステムの個々のリポジトリの構成 が不要になっている占だ 考察 ソースコードのインデックスを作成するために取れる各方法には長所と短所がある。 手作業で行う方法は一番シンプルだ。でも、インデックスの再作成を覚えていなけれ ばならないというのはつまり、これはうまくいかなくなる可能性が高いということだ。 オートコマンドを使って、バッフアが保存されるたびに ctags を呼び出すことで、 tags ファイルが常に最新の状態を保つことは保証されるが、そのコストはどうだろう。 コードベースが小規模なら、 ctags を実行する時間が気になることはないかもしれな い。でも、大規模なプロジェクトでは、思考の流れを中断するのに十分な時間がかかる かもしれない。また、この方法は、エデイタ外で行われた変更はいっさい関知しない。 コミットするたびにコードベースのインデックスを再作成するのが、ちょうどよい ところを突いている。確かに、作業中のローカルコピーと、 tags ファイルが分離され るが、エラーはなんとかなる。アクテイプに作業しているコードは、タグを使ってナ ビゲーションを行いたくなることはあまりないコードだ。それから、 tags ファイル中 のキーワードは検索コマンドを使ってアドレス指定されることを思い出そう ( 321 ペー ジの「 tags ファイルを調べてみる」を参照 ) 。これにより、変更に対して、インデック スが堅牢性を十分に保持できるようになっている。 * 5. http ://tbaggery.com/2011/08/08/effort1ess-ctags-vith—git . html 325

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

第 19 章 ダイヤル X を廻せ ! 自動補完だ 自動補完は単語全体を入力する手間を省いてくれる。最初の数文字を入力すると、 Vim はそこに続く候補のリストを作成して、ユーザーが選択できるようにしてくれる。 これが使えるものになるかどうかは、候補のリストの扱いにどの程度習熟するかしだ いだ。 TIP112 ( 356 ページ ) では、自動補完メニューを使ううえでのテクニックをい くつか見てみよう。 次の TIPIII では、自動補完の基本について説明する。自動補完の候補のリストは、 現在の編集セッションでオープンされているファイル、インクルードされるファイル、 タグファイルのすべてをスキャンすることで作成される。この意味については TIPI 13 ( 358 ページ ) で説明しよう。また、候補のリストを絞り込む方法も説明する。 キーワードだけではなく、候補のリストを構築する方法はほかにもある。表 19 ー 1 ( 355 ページ ) に、代表的なものをまとめよう。これらについてそれぞれ、本章の対応 する TIP で取り上げる。 Vim の自動補完機能をフルに活用するには、 2 つのことを理解しておく必要がある。 関連する候補を呼び出す方法と、リストから適切な単語を選択する方法がそうだ。こ れらについて、以下の TIP で順に見ていこう。 T 旧 1 1 1 : Vim のキーワード自動補完機能とは キーワードの自動補完では、 Vim はユーザー入力途中の単語を推測しようと する。このおかげで、単語全体を手で入力する手間が省ける。 Vim の自動補完機能は挿入モードから起動される。起動されると、現在の編集セッ ションの個々のバッフアの内容から単語リストを構築し、途中まで入力されている単 語があるか、カーソルの左側にある文字を調べる。そうした単語があれば、単語リス トがフィルタリングされて、途中まで入力されている文字で始まっていないものすべ 353

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

キーストローク {start} RTFM (Read the Forgotten Manual) く バッフアの内容 く a ef="http : //pragprog ・ com/dnvim/">Practica1 Vim く /a> く a href="http : //pragprog ・ com/dnvim/">Practical ViIE く /a> ビジュアルな範囲選択の表記方法は、検索のマッチの強調表示の方法と同じである ことに注意しよう。この形式の表記をする際には、検索のマッチなのか、ビジュアル モードでの範囲選択なのかは文脈からすぐにわかるはずだ。 サンプルのダウンロード 本書のサンプルはとくに断りのない限り、ファイルの内容を示してから、それに変更 を加える。これらのコードのリスト表示は以下のようにファイルバスが含まれている。 acros/lncremental.txt partridge in a pear tree turtle doves French hens calling birds golden rings こんな感じのファイルバスっきのリストが出てきたら、それはそのサンプルをダウ ンロードできるということだ。 Vim でファイルをオープンして、実際に自分で試して ほしい。 Vim をマスターするにはこれが一番だ ! そのためにも、 PragmaticBookshelf 、 3 からすべてのサンプルとソースコードをダウ ンロードしよう。インターネットに接続している電子デバイスで本書を読んでいる方 は、ファイル名をクリックするたびにそのファイルをダウンロード可能だ。上のサン プルで試してみてほしい。 Vim のデフォルト設定を使う Vim は非常に多くの部分を構成により変更できる。デフォルト設定が気に入らなけ れば変更できる。これは、すばらしい。しかし、カスタマイズした Vim を使って、本 書のサンプルをそのまま実行しようとすると「あれれ ? 」となるかもしれない。本書 で述べている方法ではうまくいかない、ということもあるだろう。カスタマイズによ り、どこかでうまくいかなくなっていると思ったときには、簡単なテスト方法がある。 * 3. http : //pragprog. com/titles/dnvim/source-code

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

第 2 章ノーマルモード 挿入モードから抜ける必要がないのが違うだけだ。これは、 作にも暗黙的に影響する。 T 旧 9 : 変更を繰り返し可能なものにする ドットコマンドの操 キーストロークバッフアの内容 カーソルが行末にあるので、後方削除から始めるという考え方もあるだろう。 後方削除 The end is nigh norma[-mode/the-end.@x 以下のテキストの行末にカーソルがあり、単語「 nigh 」を削除したいとしよう。 同じときには、どっちを勝ちにすればいいのだろう。 一番少なくて済むのはどの方法かだ ( VimGolf * 1 ともいう ) 。でも、キーストロークが 価する際に、一番わかりやすい尺度となるのが効率性だ。つまり、キーストロークが Vim では、何かをする方法は常にいくつも存在している。どの方法がベストかを評 つの変更をどのように積み上けていくかを常に意識する必要がある。 Vim は繰り返し処理に最適化されている。このことを活用するには、 1 つ 1 {start} The end The end is The end i s を押すと、カーソル位置の直前の文字からその単語の先頭の文字までが削除され る。でも、最後の「 h 」はそのまま残される。残されたこの文字はまを押せば削除され る。 Vim Golf のスコアは 3 だ。 * 1 . http://vimgolf.com/ 44