vim memo
vim de IDE
IDE (Integrated Development Environment)とは統合開発環境です。linux自体が統合開発環境ですが、プラグインを追加するとvimがもっと、もっと便利なIDEになります。
NeoBundle
http://qiita.com/kazu0620/items/819679ef006d973c6c22より
Neobundleは暗黒美夢王たるShougoさんによって作られた、vimプラグインのパッケージマネージャーです。Neobundleを導入することにより、下記の様なメリットを享受することが出来ます。
- vimrcに一行追記するだけで各種有益vimプラグインを導入することができるようになる。
- :NeoBundleUpdateコマンドを実行するだけで全プラグインを最新版にアップデートすることができる。
- 後述するNeoBundleLazyを利用することにより、起動時に必要なプラグインのみを読み込ませることで多数のプラグインを利用する場合でも起動を高速化できる。
インストール
NeoBundleは下記の手順で導入することが出来ます。
- プラグイン管理用のbundleディレクトリを作成
- 作成したディレクトリに、gitからNeobundleをチェックアウト
具体的には、下記のコマンドで導入出来ます。お手軽ですね。
$ mkdir -p ~/.vim/bundle $ git clone git://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
プラグインのインストール方法
NeoBundleの導入が完了したら、:NeoBundleInstallコマンドによるプラグインのインストールが可能になります。例えば、vim上でファイルを閲覧するためのプラグインvimfilerをインストールする場合、まず下記を.vimrcに追記しvimを再起動します。
[.vimrc]
if has('vim_starting')
" 初回起動時のみruntimepathにneobundleのパスを指定する
set runtimepath+=~/.vim/bundle/neobundle.vim/
endif
" NeoBundleを初期化
call neobundle#begin(expand('~/.vim/bundle/'))
" インストールするプラグインをここに記述
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/vimfiler'
call neobundle#end()
ag.vim & ctrlp.vim
プロジェクトのファイルを素早く検索するために、これだけあれば Opsplore はいらなくなります。
ag.vim
高速ファイル検索。カレントディレクトリを再帰的に検索して quickfix へ
:Ag 検索ワード :vimgrep 検索ワード */** |cwin とほぼ同じだが超高速!!
ctrlp.vim
ファイル検索
Ctrl+p
私の~/.vimrc
set clipboard=unnamedplus
set noautoindent
set expandtab
set noautoindent
set tabstop=4
set shiftwidth=4
set hlsearch
set scrolloff=3
set cursorline
" 検索でカレント以下にする
set path+=$PWD/**
filetype plugin indent off
if has('vim_starting')
set runtimepath+=~/.vim/bundle/neobundle.vim
call neobundle#begin(expand('~/.vim/bundle/'))
NeoBundleFetch 'Shougo/neobundle.vim'
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/neosnippet.vim'
NeoBundle 'ctrlpvim/ctrlp.vim'
NeoBundle 'Shougo/vimproc.vim', {
\ 'build' : {
\ 'windows' : 'tools\\update-dll-mingw',
\ 'cygwin' : 'make -f make_cygwin.mak',
\ 'mac' : 'make -f make_mac.mak',
\ 'linux' : 'make',
\ 'unix' : 'gmake',
\ },
\ }
NeoBundle 'Shougo/vimshell.vim'
NeoBundle 'rking/ag.vim'
call neobundle#end()
endif
filetype plugin indent on
" insert modeで開始
let g:unite_enable_start_insert = 1
" 大文字小文字を区別しない
let g:unite_enable_ignore_case = 1
let g:unite_enable_smart_case = 1
" grep検索
nnoremap <silent> ,g :<C-u>Unite grep:. -buffer-name=search-buffer<CR>
" カーソル位置の単語をgrep検索
nnoremap <silent> ,cg :<C-u>Unite grep:. -buffer-name=search-buffer<CR><C-R><C-W>
" grep検索結果の再呼出
nnoremap <silent> ,r :<C-u>UniteResume search-buffer<CR>
" unite grep に ag(The Silver Searcher) を使う
if executable('ag')
let g:unite_source_grep_command = 'ag'
let g:unite_source_grep_default_opts = '--nogroup --nocolor --column'
let g:unite_source_grep_recursive_opt = ''
endif
0OOooo 。。....
Explore
:e .
:Opsplore
svnと連携
- vcscommand.vim
- 名前の通り Vim からバージョン管理システム(Version Control System:VCS)に対する操作を行うためのプラグインです。特定の VCS を目的としたものではなく、CVS、Subversion、SVK、Git、Mercurial、Bazaar など複数の VCS を同じように操作できるのが特徴です。 [http://yskwkzhr.blogspot.jp/2013/06/vcscommandvim.html]
:VCSLog # ログを表示
\cl # ログを表示
:VCSDiff {rev] # Unified 形式で確認
:VCSVimDiff {rev} # vimdiff 形式で確認
もう少し使いやすくする[http://yskwkzhr.blogspot.jp/2013/06/vcscommandvim.html]より
- vcscommand_customize.vim
- VCSLog で開いたバッファで <CR> するとカーソル行のログのリビジョンを取得してVCSDiff、v すると VCSVimDiff、i すると VCSInfo
クリップボード ペースト
vimでプログラムをペーストするときにそのままだと自動的にインデントがかかって、下に行くほどコードが右に寄ってしまう。そんな時、自動的にインデントせずにペーストするには、
:set paste :set nopaste #元に戻す
カーソル行をハイライト
:set cursorline
画面の真ん中でスクロール
カーソル位置を真ん中でスクロールしたい。
- scrolloffで指定した数値は、カーソルの上下に表示する最少の行数になる。
:set scrolloff=100
横スクロール
zh #カーソル位置はそのままで1文字右へ zH # 画面半分右へ zl # 1文字左へ zL # 画面半分左へ
履歴表示
検索の履歴 q/ コマンドの履歴 q:
左右のウインドを入れ替える
C-w x <- 現在カーソルがあるウィンドウと一つ前のウィンドウを入れ替える。
文字コードを指定して読み直す
[https://sites.google.com/site/fudist/Home/vim-nihongo-ban/mojibake]より
- ファイルエンコーディングの誤判定
- ファイルエンコードの誤判定については vim/gvim固有の問題ではないのですが、文字エンコードの自動判定を設定していても使用している日本語文字種が少ない utf-8のファイルは cp932(Shift_JIS)と判定されることがあります。
自動判定に失敗して文字化けしたファイルを手動で、文字エンコードにutf-8を指定して読込直すには次のようにします。
:e ++enc=utf-8
bufferのdiffをとる
:vert diffsplit #<buffer number> :set foldlevel=1 <- 変更のない行も全て表示
シンタックスハイライト
ファイル拡張子で判断されるが、自分でファイルタイプを指定したい場合
:set filetype=cpp <- C++ :set filetype=perl <- perl :set filetype=html <- html とか
yankしたテキストが無名レジスタだけでなく、*レジスタにも入るようにする。
:set clipboard+=unnamed
カーソルの単語を検索する方法
下 * 上 #
$ sudo apt-get install exuberant-ctags
検索結果をハイライト
set hlsearch
very magic
正規表現で検索する時にやたらとエスケープ多くなるのを解消してくれる。/の後に\vと入力
/\v
fooかbarを検索
/\(foo\|bar\)
↓ (very magicを使う)
/\v(foo|bar)
vimのインデントの設定を変更する
http://d.hatena.ne.jp/nzm_o/20100515/1273911397
- autoindent
改行時に半角スペース8文字を自動挿入する。デフォルトはON。
:set autoindent "autoindentを有効にする :set noautoindent "autoindentを無効にする
- shiftwidth
オートインデント時にインデントする文字数
:set shiftwidth= 2 "tabstopと同じ値にしておけばよい
- expandtab
TABキーを押した際にタブ文字の代わりにスペースをいれる(「ソフトTab」というらしい)。デフォルトはON。
:set expandtab "ソフトタブを有効にする :set noexpandtab "ソフトタブを無効にする
タブを空白に変換
:set expandtab :retab
キーボードマクロ
:q{a-z} # 記録の開始
:q # 記録の終了
:q{A-Z} # 指定レジスタに追加を開始
編集中のファイルパスをクリップボードにコピー
let @*=expand('%:p')
- 無精・短気・傲慢