最初 - みる会図書館


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

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

第 11 章マクロ T 旧 64 : マクロの記録と実行 マクロを使うと、変更のシーケンスを記録して、それを再生できる。ここで するには、マクロを記録して、それを実行するという方法がある。 繰り返し行われる作業では、多くの場合、複数の変更が行われる。これらを自動化 は、その方法を紹介しよう。 キーストロークバッフアの内容 実際にやってみよう。 マンドがキャプチャされる。 たということだ。ロ 記録を終了するためにもう一度 4 を押すまでは、実行するすべてのコ る。ステータス行に「 recording 」 ( 「記録中」 ) と表示されたら、これが正しく行われ クの記録を始めるには、気言としてマクロを保存する先のレジスタを指定す 日キーは「 Record 」ボタンとしても「 St 叩」ボタンとしても機能する。キーストロー マクロを記録して、コマンドのシーケンスをキャプチャする foobar = f00 + bar bar 1 ・く Esc> var,_, く ESC> f00 = bar foobar var f00 bar foobar var f00 bar foobar 1 f00 + bar f00 十 bar f00 + bar 靍により、マクロの記録が始まり、レジスタ a にこれが保存される。そして、最初の 行で変更を 2 つ行っている。末尾へのセミコロン ( ; ) の追加と、先頭への var の挿入 だ。これらの変更が終わったら、日を押してマクロの記録を終了する ( → :h q ◎◎ ) 。 レジスタ a の内容を調べるには、以下を実行すればよい。 212

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

第 5 章 コマンドラインモ ード 初めに ed ありき。 プトが表示されたときや、 5qび誉を押して Expression レジスタにアクセスする際に ばれている ( 83 ページの「 Vim ( とその一味 ) の語源」を参照 ) 。 ~ を押して検索プロン 歴史的な理由から、コマンドラインモードで実行するコマンドは Ex コマンドと呼 すだけでいつでも切り替えられる。 押して、それを実行する。コマンドラインモードからノーマルモードへは、をを押 ルで使用するコマンドラインと似通ったところがある。コマンド名を入力し、を ーキーを押すと、 Vim はコマンドラインモードに切り替わる。このモードには、シェ いてもいくつか見てみよう。 をいくつか紹介する。また、このモードで使える特殊なキーマッピングにつ するように求められる。ここでは、バッフア内の行を操作する Ex コマンド コマンドラインモードでは Ex コマンドや検索バターン、あるいは式を入力 引 P27 : Vim のコマンドラインモード るコマンドラインモードの使い方を説明しよう。 て、 Ex コマンドはいまでも最適のツールだ。本章では、 ex の痕跡を垣間見せてくれ タの遺伝子は最新の Vim でも失われずに残っている。行指向の操作のいくつかについ こそ、私達の手には Ex コマンドがあるのだ。これら初期の Unix のテキストエディ れた。そして、 vi の起源は ex と呼ばれるラインエデイタへと遡る。 ex があったから Vim の起源は vi に遡る。 vi で、モードを持った編集というパラダイムが生み出さ Unix 旧約聖書 そして、ⅵから Vim ができた。 ed から ex ができ、 ex から vi ができた。

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

付録 A 自分の好みに合わせて Vim をカスタマイスするく 行番号表示を有効にするには、以下を実行すればよい。 → :windo set10ca1 number : setl 。 cal コマンドは、変更の範囲を現在のウインドウもしくは現在のバッフアと する ( オプションがグローバルにしか設定できない場合を除く ) 。「 :set number 」を 実行したとすると、これは現在のウインドウで行番号表示を有効にするだけではなく、 グローバルなデフォルト値も新規に設定する。既存のウインドウはローカルな設定の ままとなるが、新規に作成されたウインドウには新しいグローバル設定が適用される。 A. 2 自分の構成をⅵ mrc ファイルに保存する Vim の設定をオンザフライで変更するのはもちろんすばらしい。でも、自分が特に 気に入っているカスタマイズがあるとしたら、編集セッションを越えてそれが永続化 されると便利だ。 カスタマイズはファイルに書き込むことで保存できる。そして、「 : source {f ile} 」 コマンドで、指定した {file} からその設定を現在の編集セッションに適用できる ( →山 : source ①◎ ) 。ファイルを : source すると、コマンドラインモードで入力 されたかのように、 Vim が各行を Ex コマンドとして実行する。インデントを 2 タブ としてファイルを扱うことがよくあるとしよう。この適切な設定を含んだファイルを 作成して、これをディスクに保存できる。 ustomizations/two-space-indent. vim Use tWO spaces for indentation set tabstop=2 set softtabstop=2 set shiftwidth=2 set expandtab 上記の設定を現在のバッフアに適用したければ、以下のコマンドを実行する。 - , : source two¯space¯indent . オンザフライで設定を変更するときには、最初にコロン ( : ) を入力してコマンドラ インモードに切り替える。設定をファイルに保存するときには、このコロンは必要な 379

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

TP110 : Vim の内部検索エンジンを使って grep するく % c 要素がカラム番号にマッチする。 T 旧 1 10 : Vim の内部検索エンジンを使って部 ep する :vimgrep コマンドでは、 Vim のネイティブな正規表現工ンジンを使って、複 数ファイルから検索を行える。 Vim には :vimgrep というコマンドがある。これは Vim に組み込みの検索エンジン を使うものだ ( このコマンドは vim と省略表記できる ) 。構文は以下のようになって いる。 :vim[grep] [ ! ] /{pattern}/[g] [j] {file} 1 行に複数のマッチがあるときには、 g フラグが指定されていれば、そのそれぞれ についてマッチが作成される。 g フラグが指定されていなければ、行全体について 1 つのレコードだけが作成される。デフォルトでは、 Vim は最初のマッチにまっすぐに ジャンプするが、 j フラグを含めることで、この挙動をキャンセルできる。 { file } 引数は指定が必須だ。 { file } には、ファイル名、ワイルドカード、バック クオート式、これらを組み合わせたものなど、 : args コマンドと同じ引数にれについ ては 118 ページの「引数リストの設定」で見た ) を指定可能だ。 * ワイルドカードはディ レクトリ内のすべてのファイルにマッチする。 * * ワイルドカードは、指定したディレ クトリまたはそのサプディレクトリにあるすべてのファイルにマッチする。さらに # # も指定できる。これは、引数リストに含まれている各ファイルの名前に展開される ファイルを検索、そしてプロジェクトを検索 : vimgrep を使うことの主たる長所は、これが Vim の検索コマンドと同じパターンを 理解するので、現在のファイルを検索することで、正規表現を組み立てられるという点 だ。マッチすべきものにマッチするようになったら、そのパターンを使って : vimgrep を実行する。以下では、 TIP85 ( 271 ページ ) で組み立てたパターンを使っている。 351

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

第 14 章置換 : %s//\=submatch( の -l/g 結果になる。 く hI>Heading number 1 く / hl > く h2>Number 2 heading く /h2> く h3>Another heading く /h3> 上記の HTML で、検索を行ってからこの置換コマンドを実行すると、以下のような 296 難しいところは、これらの単語のどちらかを受け取り、もう一方を返す式の記述だ。 なところは、「 dog 」と「 m 」の両者にマッチするパターンの記述だ ( 考えてみよう ) 。 ツーパスの解法はよくないので、ワンパスで動作する置換コマンドが必要だ。簡単 ろうじゃないか。 「 dog 」に変更している。これで「 the dog bit the dog. 」となる。もっとまじめにや は「 the man bit the m . 」となる。そして、 2 つめのコマンドで両方の「 m 」を 最初のコマンドで「 dog 」を「 m 」に変更している。これにより、上記のフレーズ → : %s/man/dog/g → : %s/dog/man/g 何も考えずに試してみた。 が、置換コマンドを使って、これを行うとどんな感じになるか、考えてみよう。 語を入れ替える」で見たように、ヤンク操作に続けてブット操作をすればできる。だ 「 dog 」と「 m 」の順序を入れ替えたいとしよう。もちろん、 203 ページの「 2 つの単 The dog bit the man. substitution/who-bites.txt 以下のテキストを使おう。 できる。これには、 Exp 「 ession レジスタと Vim スクリプトを使用する。 ある単語と別の単語のすべてを互いに入れ替えるような置換コマンドを作成 T 旧 95 : 2 つ以上の単語を入れ替える HTML ヘッダタグは変更されたが、独立して存在する数字はそのままだ。

6. 実践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 には、ドキュメント内を移動するためのコマンドがたくさんある。さらに、バッ

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

第 6 章複数ファイルの管理 どんなことができるかを示した Vimcasts.org にある画面ショットを紹介しよう * 5 。 :h wi Ⅱ d 。 w ー m 。 vi Ⅱ g ⑩◎を参照すれば、もっと詳しいことがわかるだろう。 引 P40 : タブページを使ってウインドウのレイア ウトを管理 Vim のタブインターフェイスは、他のテキストエデイタのタブとは別物だ。 タブページを使って、分割ウインドウをワークスペースのコレクションにま 図 6 ー 1 とめられる。 Vim においては、タブページとはウインドウのコレクションを格納可能なコンテ 分割ウインドウをタブページに構成 128 * 5. http ://vimcasts. 0 て g / e / 7 ウに読み込む。 Vim は、現在オープンされているファイル群をバッファリストを使っ したりはしない。その代わりに、バッフアを新たに作成して、それを現在のウインド : edit コマンドでファイルをオープンした場合、 Vim は自動的に新しいタブを作成 る複数のファイルを表すといえるだろう。 イルを開くたびに作成される。このモデルでは、複数のタブが現在オープンされてい スに新しくタブが開いて、選択したファイルがそこに表示される。新しいタブは、ファ リーが表示される。サイドバーでファイルをクリックすると、メインのワークスペー ワークスペースが中心にあって、サイドバーには現在のプロジェクトのディレクトリッ テキストエデイタの古典的な GUI では、ファイルを編集するためのメインとなる デイタや IDE でタブがどう機能するかをまずは見てみよう。 Vim のタブインターフェイスは奇妙なものに見えるかもしれない。多くのテキスト工 ナのことだ ( → :h tabpageOO)0 別のテキストエデイタに慣れている方には最初、

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

TlP88 : ファイル中のすべてのマッチを検索 / 置換するく 意味 キャリッジリターンを挿入 タブ文字を挿入 バックスラッシュを 1 つ挿入 1 つめの部分マッチを挿入 2 つめの部分マッチを挿入 ( \ 9 まで ) マッチしたパターン全体を挿入 マッチしたパターン全体を挿入 直前の : substitute の {string} を使用 {Vim script } 式を評価して、その結果を置換用の { string } として使用 \={Vim script} \r 、 \t 、 \ \ の各トークンは見たとおりだ。 TIP92 ( 289 ページ ) では、 ~ トークンが どのように振る舞うか、さらに置換コマンドの繰り返し実行を高速化さえするいくつ かのショートカットも見てみよう。 \ 1 と \ 2 については TIP93 ( 293 ページ ) で説明し よう。 \={Vim script } トークンは非常に強力だ。これを使うと、コードを実行して、その 結果を置換 {string} として使える。 TIP94 ( 294 ページ ) 、 TIP95 ( 296 ページ ) では、 この使用例をいくっか紹介する。 T 旧 88 : ファイル中のすべてのマッチを検索 / 置換する デフォルトでは、置換コマンドはカーソル行に作用して、最初のマッチだけ を変更する。ファイル中のすべてのマッチを変更するには、範囲を指定して、 g フラグを使用する必要がある。 例として、こでは以下のテキストを使う。 SübSfftutjon/geg-roIling. txt When the going gets tough , the tough get going ・ If you are going through hell , keep going ・ すべての「 going 」を「 rolling 」に置換してみよう。ます、「 hlsearch 」オプショ ンを有効にして、何をしているのかがわかるようにしよう ( hlsearch の詳細について 号 己、 \ - 1 2 0 281

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

第 14 章 置換 置換コマンドを、単に検索置換処理を行うだけのものと考えているかもしれない。 実際には、これは Vim で使える Ex コマンドのなかでも最も強力なものの 1 つだ。本 章を読み終わる頃には、シンプルなものから複雑なものまで、置換コマンドが担える さまざまな役割のすべてがわかるだろう。 直前の検索パターンを流用して、置換コマンドをテキパキと組み立てるのに使える テクニックもいくつか紹介しよう。また、置換を確定する前に目視で確認が可能な、 特殊ケースについても見てみる。入力なしで置換フィールドに入力する方法を見て、 置換フィールドで使える特殊な挙動もいくつか試してみよう。さらに、コマンドすべ てを再入力する必要なしに、異なる範囲に対して、直前のコマンドを繰り返し実行す る方法も説明する。 置換フィールドでは、 Vim スクリプト式を実行可能だ。このことを活用して、マッ チが数値の場合に、それらに算術演算を行う高度なサンプルも見てみよう。そして、 2 つ以上の単語を 1 つの置換コマンドで交換する方法も見る。 最後に、複数のファイルに対して検索と置換を実行する際の戦略をいくつか紹介 する。 T 旧 87 : 置換コマンド : substitute コマンドは複雑だ。検索バターンと置換文字列を指定するだけ ではなく、これを実行する範囲も指定する必要がある。オプションで、その 動作をチューンするフラグも指定可能だ。 置換コマンドを使うと、何らかのテキストを検索して、 換えられる。コマンドの構文は以下のようになっている。 これを別のテキストで置き : [range] s [ubstitute] /{pattern}/{string}/ [flags] 279

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

第 13 章検索 最初はビジュアルモードで単語を 3 つ選択していて、カーソルは「 sea 」の上にあ こで一コマンドを実行すると、次にある「 sea 」を前方検索して、ビジュアルな る。 選択範囲を拡張する。この振る舞いは、ノーマルモードの一と同様だが、これが役に立 っと感じたことは筆者的にはあまりない。 Vim にはまり込む前は、筆者は別のテキストエデイタを使っていて、それには「選 択範囲を使って検索を行う」コマンドがあったのだ。このコマンドのショートカット を筆者は指に焼きつけて、どんなときにもこれを使ったものだ。 Vim に宗旨替えをし たときには、この機能がないことにビックリした。ビジュアルモードで一を実行した ら、現在の単語ではなく、現在の選択範囲を検索すべきだといつも感じていた。ちょっ とした Vim スクリプトを書くだけで、この機能を Vim に追加できる。 現在の選択範囲を検索 ( 未完成バージョン ) :h visua1-searchOO を見ると、こんなことが書かれている。 現在選択されているテキストを検索できるようにするためのマッピング案を以下 に示す。 :vmap X y/ く C-R>" く CR> 特殊文字 ( 「 . 」や「 * 」 ) があると問題が発生することに注意。 ッコマンドは、現在のビジュアルな選択範囲をャンクする。 / く c ー r > " 0 は検索プロ ンプトを表示して、デフォルトのレジスタ内容を貼り付け、検索を実行する。この方 法はシンプルだが、 Vim のドキュメントの注意点で述べられているように制限がある。 TIP78 ( 254 ページ ) では、このような制限に打ち勝っ方法を見た。その理論を実践 に当てはめて、特殊文字があっても失敗することなく、現在の選択範囲を検索するよ うなマッピングを作ってみよう。 276