トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

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は下記の手順で導入することが出来ます。

  1. プラグイン管理用のbundleディレクトリを作成
  2. 作成したディレクトリに、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')