1.vimで複数のファイルからキーワードを検索する
1.1 基本的な使い方
:vimgrep pattern files例えば、
:vimgrep key_word src/**/*はsrcディレクトリの下にあるすべてのファイルから、key_wordの個所を検索する
:args `find . -type f`は/key_word1/、/key_word2/、/key_word3/とそれぞれのキーワードを同じファイルタイプについて検索する。
:vimgrep /key_word1/ ##
:vimgrep /key_word2/ ##
:vimgrep /key_word3/ ##
:vimgrep /Ctrl_C// src/**/*はひとつ前の検索対象キーワードでsrcの下にすべてのファイルを検索する。
:vimgrep /keyword/ *|cwは現在開いているファイルの関数一覧から検索する。あるいは%を使う。
最初にマッチした場所へ移動したくない場合
:vimgrep /keyword/j *.txt同様に、g オプションをつけると、すべて、マッチします。(デフォルトでは、それぞれの行に対して一度しかマッチしません)
大文字小文字を区別しないには、 \c を指定します。
:vimgrep /foo\c/ *複数キーワードを検索するときに、
:vimgrep /\(keyword1\|keyword2\)/ *.cヘルプのgrepには専用のコマンドが用意されています。
:helpg[rep] keyword
"いつもcwコマンドを使用する場合は以下のように書けば省略できる。
au QuickfixCmdPost grep cwlvimgrepもほぼ同じ機能のコマンドであり、その結果を見るには、lopenかlwです。
au QuickfixCmdPost vimgrep c
他の検索コマンド
ag、yagrep、jvgrep、GNU grep、 fgrep、 egrep、 agrep等は利用できます。
「set grepprg=yagrep\ -nH」という設定すればいいです。
1.2 検索結果の閲覧
以下のコマンドで検索結果の一覧を閲覧できる
:copenあるいは、 :cp(cprev)、:cn(cnext) で前後の結果へジャンプできます。cwはcopenと同じコマンドです。
2.外部のプログラムやコマンドを実行
「!」を付けて外部のプログラムやコマンドを実行できる。たとえば、
:!ls3.ウィンドウを分割する
:splitでウィンドウを水平に分割する。簡略コマンドはss。垂直に分割するにはvsplit(簡略コマンドはsv)
Ctrl+w Ctrl+wでアクティブウィンドウを切り替える。上下左右はそれぞれ、Ctrl+Wとk、j、h、lの組み合わせです。
ウインドウの幅を増やすには、Ctrl+wと>、減らすには<を使います。
ウインドウの高さを増やすには、Ctrl+wと+、減らすには-を使います。
ウインドウの大きさを揃えるには、Ctrl+wと=を使います。
ウインドウを閉じるには、Ctrl+wとcを使います。
4.関数名から関数の本体に飛ぶ方法
変数なら、その変数の宣言箇所に飛びます。
ctagsを使って、tagsファイルを作成し、vimでカーソルを関数名に持っていき、Ctrl+]で、対応関数の定義箇所に飛んで行けます。
ctagsは"yum install ctags"などでインストールする必要あります。
tagsファイルの作成は、バージョン管理システムのルート(gitならば、そのbranchのルート)の下でvimを立ち上げて、:TagsGenerate!を実行すればよいです。
"ctags nout found"と言われるときに、~/.vimrcに"set tags=../.git/tags"のように、tagsのフォルダ位置を指定すればよいです。
ctagsのvim内のコマンドは以下の通りです。
コマンド | 内容 |
ctrl-] | 関数・メンバの定義へ移動 |
ctrl-tまたは:pop | ジャンプ前のファイルに戻る |
gを押した後、Ctrl-] | 複数関数の定義がある場合、どれに行くか選択できる |
ctrl-wを押した後、Ctrl-] | 横に分割してジャンプする |
:tsまたは:tselect | タグの分岐に戻って別に行ける |
:tags | タグの履歴を調べる |
:taまたはtag | ctrl-tの逆。これはショートカットがない。 |
5.tagbarで関数や変数の定義参照をさらに楽にする
tagbarはctagsに依存するvimのプラグインで、オフィシャルHPからダウンロードできます(zip)。
プラグインをインストールしたら、~/.vimrcに以下の設定を追加すればよいです。
nmap <F8> :TagbarToggle<CR>6.シェルコマンドを実行するには
vimshellというプラグインを使います。
但し、vimprocに依存するので、それをインストールする必要があります。
インストールが済んだら、以下のコマンドで、vimのウインドウ内でシェルコマンドを実行できます。
:VimShell7.複数のキー操作を楽にするには
submodeというプラグインを使えば、ユーザが自由にサブモードを定義できます。
8.コメントなどの表示色を変更・指定するには
例えばコメントを緑色で表示させるには、~/.vimrcに以下のように指定すればよい。
hi Comment ctermfg=2
あるいは、
hi Comment ctermfg=gray
使える色の名前は、:help hiで調べられます。
9.プラグインを管理するにはNeoBundle.vimを導入
~/.vimrcに以下のものを追加して、vimを立ち上げて、":NeoBundleInstall"をじっこうすれば、NeoBundle.vimを簡単に導入できます。
" Note: Skip initialization for vim-tiny or vim-small.10.Gitとの連携
if 0 | endif
filetype off
if has('vim_starting')
if &compatible
set nocompatible " Be iMproved
endif
set runtimepath+=~/.vim/bundle/neobundle.vim
endif
call neobundle#begin(expand('~/.vim/bundle/'))
" originalrepos on github
NeoBundle 'Shougo/neobundle.vim'
NeoBundle 'Shougo/vimproc', {
\ 'build' : {
\ 'windows' : 'make -f make_mingw32.mak',
\ 'cygwin' : 'make -f make_cygwin.mak',
\ 'mac' : 'make -f make_mac.mak',
\ 'unix' : 'make -f make_unix.mak',
\ },
\ }
NeoBundle 'VimClojure'
NeoBundle 'Shougo/vimshell'
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/neocomplcache'
NeoBundle 'Shougo/neosnippet'
NeoBundle 'jpalardy/vim-slime'
NeoBundle 'scrooloose/syntastic'
NeoBundle 'Shougo/vimfiler.vim'
NeoBundle 'itchyny/lightline.vim'
NeoBundle 't9md/vim-textmanip'
NeoBundle 'Shougo/unite.vim'
NeoBundle 'ujihisa/unite-colorscheme'
NeoBundle 'tomasr/molokai'
""NeoBundle 'https://bitbucket.org/kovisoft/slimv'
call neobundle#end()
filetype plugin indent on " required!
filetype indent on
syntax on
NeoBundleCheck
fugitiveはその一つです。Gdiffで二つの画面でファイルを見比べられたり、Greadですべての変更を元に戻せたりします。
Glogでは過去のcommit履歴を簡単に見ることができ、各バージョンのファイル全体を見ることができる
まず、~/.vimrcに以下の内容を追加します。
NeoBundle 'tpope/vim-fugitive'次に、vimを立ち上げて、以下のコマンドを実行します。
:NeoBundleInstall11.完全一致のキーワード検索
基本に戻りますが、hodgeというキーワードと完全一致するものを検索したい場合:
/\<hodge\>
で、"hodge.abc"や、” (hodge) "等を見つけることはできます。"config_abc"のようなものは対象外になります。
12.大文字小文字を区別しないで検索する (vi/vim共通)
/hodge\c
参考リンク
[1] Vim pluginへの入門[NeoBundle.vim]
[2] vim-fugitiveがやっぱり便利
[3] Quickfixを知ってからfugitiveを使うと捗る
[4] 普段使いエディタをVimにする
[5]Vimで改行時の自動コメントアウトを無効化
[6] vim正規表現リファレンス
No comments:
Post a Comment