viの使い手がvimエディタについて知っておくべき事 トップ10
Top 10 things Vi user need to know about Vim(http://www.oualline.com/10/top_10.html)意訳。
2. 設定を有効にしないと、vimエディタの便利な機能は利用できない
デフォルトではvimエディタはvi互換モードで動作します。 つまり、多くのvimエディタの便利な機能は無効になっています。 もっとも簡単にそれらの機能を有効にする方法は $HOME/.vimrc設定ファイル を用意することです。
これがそのサンプル です。( このファイルの説明はこちらです。 )
一番最初に気がつくであろうvimエディタの機能は、 vimエディタでは複数回のアンドゥが可能であることでしょう。 .vimrc設定ファイル を作成する時にきっと気づきます。
3. マルチウィンドウ
:split
カレントウィンドウを2つに分けます。 Control-w k でカーソルを上のウィンドウに、 Control-w j でカーソルを下のウィンドウに移動できます。
:split file.txt
ウィンドウを2つに分割し、もう一方のファイルの編集を開始します。
ウィンドウを閉じる時は、通常のvimエディタでの終了コマンドと同じく、 ZZ や :q を使用して閉じます。
4. ビジュアルモード
v とタイプすると、vimエディタはビジュアルモードに入ります。 ビジュアルモードではテキストを選択して、その選択したテキストの集合に、 vimエディタの編集コマンド(例えば、 d 、 y 、 > など)を実行できます。
実際に試してみましょう。 テキストのブロックを v で選択し、カーソルを動かしてください。
そこで d コマンドを実行すると、その選択したテキストが削除されます。
v コマンドはテキストを文字単位で選択します。 Control-v コマンドはテキストをブロックとして選択します。 V コマンドはテキストを行単位で選択します。
5. 'incsearch'と'hlsearch'オプション
'incsearch' オプション
デフォルトでは検索ワードを入力後に検索が実行されますが、 次のオプション incsearch を有効すると、インクリメンタルな検索を行うようになります。
:set incsearch
インクリメンタル検索では、検索ワードの最初の文字を入力した時点で検索が開始されます。 そして、より多くの検索ワードを入力していくごとに、より検索結果が洗練されていきます。
'hlsearch'オプション
highlight search option ('hlsearch') オプションを有効にすると、
検索結果をハイライト表示します。
この hlsearch オプションは次のコマンドで有効になります。
:set hlsearch
このオプションを有効にすると、検索にマッチしたすべてのテキストが ハイライトされます。
6. 'cindent'オプションと'='コマンド
viエディタに前の行と同じインデントを保つ'autoindent'オプションがありましたが、 vimエディタにはもっと素晴らしいインデントの機能があります。 次のコマンドで'cindent'オプションを有効にすると、C言語スタイルのインデント機能が有効になります。
:set cindent
この設定を有効にすると、新しい行は標準的なC言語のインデントに従って、 自動的に適切なインデントを行うようになります。
7. ':make'コマンド
あるプログラムを作成し、そのプログラムに対するMakefileも作成しました。 これから、そのプログラムをコンパイルし、エラーを修正する必要があります。 この作業を行うなら次のコマンドを実行します。
:make
このコマンドはmakeコマンドを実行し、その実行結果を取得します。 コマンド終了後は最初のファイルに移動します。
次にエラーを修正します。 エラーの発生した行に移動するには次のコマンドを実行します。
:cn
このコマンドを実行すると、たとえ別のファイルにあったとしても、 エラーの発生した場所まで移動できます。
:cn を使用して、全ての問題を修正するか、再コンパイルを実行するまで、 修正作業は続けられます。
もし途中で、もう一度エラーメッセージを見たくなったら、次のコマンドを実行してください。
:cc
8. タグファイルによるナビゲーション
$ ctags *.c
コマンドで指定したファイルの全てのタグの一覧表ファイルを生成します。 このファイルの名前は'tags'になります。
このファイルをvimエディタで、プログラム編集の手助けになるツールとして使用できます。
$ gvim -t a_function
このコマンドでvimエディタを開始すると、 "a_function"の関数定義のある位置からカーソルが始まります。 (どんなファイルであっても問題ない)
タグの操作
"a_function"関数から"write_block"関数を呼び出すような、 次のようなコードがあるとして、
void a_function(void) { write_block(); //...
"write_block"関数が何をしているのか知る必要があるとしましょう。 そういった場合、カーソルを"write_block"の宣言の上に持っていき、 Control-] と入力してください。カーソルが"write_block"関数の位置まで移動します。 (必要なら別のファイルに移動もします)
さらに、"write_block"関数が"write_char"を呼び出しているなら、 カーソルを"write_char"の上まで移動し、 Control-] を押せば、 "write_char"の定義まで移動できます。
いくつかの関数定義を渡り、全てを理解したのなら、 Control-t で1つ前の位置に戻れます。 すなわち、 Control-t で"write_char"関数から"write_block"関数の位置に戻れ、 次の Control-t で、"write_block"から"a_function"の位置に戻れる、ということです。
9. 略語
私は、次の略語を、$HOME/.vimrc設定ファイルで定義しています。
:ab #b /**************************************** :ab #e ^V^H*****************************************/
この定義は、ボックスコメントを簡単に作成するためのものです。 #b とタイプするとボックスコメントの上部分を出力し、 #e とタイプするとボックスコメントの下部分を出力します。 (コメントの頭には「^V^H」を入れています。)
これらの略語は、タブ使用時に、コメントの端を合わせられるように設定してあります。
10. 単語補完
単語を途中まで入力中に、 Control-p で上の方を検索してマッチするワードで補完、 Control-n で下の方を検索してマッチするワードで補完できる。
Recent Comments
ありがとうございます!
http://nanasi.jp/articles/howto/editing/visualcursor-endtoend.html · 7 years ago
知りませんでした。有難うございました。
http://nanasi.jp/articles/howto/file/open-with-format.html · 9 years ago
<c-f>1ページ分、下にスクロールする<c-b>1ページ分、上にスクロールする
どっちも逆です。
http://nanasi.jp/articles/howto/user-manual/user-manual-motion.html · 10 years ago
set 使用時に : で閉じるのを忘れて右往左往してました。
http://nanasi.jp/articles/howto/file/modeline.html · 10 years ago
やっぱり日本語の方が早いっす。
http://nanasi.jp/articles/howto/help/help_ja.html · 11 years ago