Vimの設定や操作方法の復習

会社で支給されたPCにvim環境を整え、久しぶりにvimを使っていたところ、いろいろと忘れていることがあったのでメモしておく。

まずはgithubからneobundleを入れる

vimをインストールしたらまずはgit cloneしてneobundleを入れる。

git clone https://github.com/Shougo/neobundle.vim.git ~/.vim/bundle

neobundleが入ったら、.vimrcに以下のコードを記述する。この命令ではneobundleからgitを使うためにパスを通し、pluginsディレクトリの中のbundleディレクトリからneobundle.vimを呼び出すようにしている。

let $PATH = $PATH . ';C:\Program Files\Git\bin'
set nocompatible
filetype off
if has('vim_starting')
    set runtimepath+=$VIMpluginsbundleneobundle.vim
    call neobundle#rc(expand('$VIMpluginsbundle'))
endif

更に以下の内容をvimrcに追記する。以下はneobundleを通してプラグインをインストールする為のコード。ここら辺は好みに合わせてインストールするプラグインを変更しても良い。

NeoBundle 'Shougo/neobundle.vim'
NeoBundle 'Shougo/vimproc'
NeoBundle 'Shougo/vimshell'
NeoBundle 'Shougo/neocomplcache'
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/vimfiler'
NeoBundle 'kien/ctrlp.vim'
NeoBundle 'thinca/vim-quickrun'
NeoBundle 'scrooloose/syntastic'
filetype plugin indent on
filetype indent on
syntax on

以上の記述が終わったらvimrcを保存し、vimから:NeoBundleInstallコマンドを叩くと一括でプラグインをインストールすることができる。

スワップファイルとバックアップファイルの保存場所を決める

以下のコードをvimrcに追記する。以下はスワップファイルとバックアップファイルの保存場所を指定するコード。

set backupdir=$HOME/.vim/backup
set browsedir=buffer
set directory=$HOME/.vim/backup,c:\temp
set history=1000

最低限の設定はひとまずこれで終了。

vimの基本操作

vimは習得コストが高いことが知られており、いろいろな人のアドバイスを受けながらやっと基本的な操作方法を身に着けかけていたにも関わらず、半年間ものニート生活を満喫し過ぎたせいでほとんどの操作を忘れていた。この際なので思い出しながら操作方法をメモしてみようと思う。
※以下、はCtrlとaの同時押し, はShiftとaの同時押し, はAltとaの同時押しを指す。

キー 説明
<ESC>, <C-[> ノーマルモードへと移行する。Esc、もしくはCtrl + [で行う。
i,a ノーマルモードから挿入モードへと移行する。iではカーソル前、aではカーソル後から挿入する。
: ノーマルモードからコマンド入力を行うことができる。:wで上書き保存。:qでファイルを閉じる。:wq!とすると強制的に上書き保存を行いつつファイルを閉じることができる。:e ファイルパスでファイルを開く。
v ノーマルモードからビジュアルモードへ移行する。文字選択することができる。
V ノーマルモードからビジュアルラインモードへ移行する。行選択することができる。
<C-v> ノーマルモードからビジュアルブロックモードへ移行する。矩形選択することができる。
/ ノーマルモードから前方検索モードへ移行する。前方検索モードでは、検索ワードを入力した後にEnterを押すことで検索を確定させる。検索確定後は、nで検索、Nで逆順検索を行うことが出来る。
% カーソル下の括弧に対応する括弧にジャンプする。
* カーソルの乗っている単語を前方検索モードにて検索する。
h,j,k,l カーソルを左,下,上,右に動かすことが出来る。
H,L Hで見えている範囲の一番上にカーソルを移動。Lで見えている範囲の一番下にカーソルを移動。
w,W 次の単語の最初の文字にカーソルを移動。
e,E 次の単語の最後の文字にカーソルを移動。
b,B 前の単語の最初の文字にカーソルを移動。
J 行の改行を削除する。
K フレーズをmanコマンドで検索する。
g,G カーソルを行移動する。gでは行きたい行を指定して移動できる(ggでは1行目に移動し、3ggでは3行目に移動できる)、Gでは一番下の行に移動することができる。
o,O 改行しつつ挿入モードに入る。oではカーソルより下の行を改行し、Oではカーソルより上の行を改行する。
s,S 文字や行を削除しながら挿入モードに入る。sではカーソルのある文字を削除し、Sではカーソルのある行を削除する。
u アンドゥする。操作内容を取り消して一つ前に戻る。
<C-r> リドゥする。取り消した操作内容を元に戻す。
x カーソル上の1文字を削除する。5xなどとすると5文字削除できる。
d ddで行を削除。dwやdbで単語単位で削除。d^で行頭、d$で行末まで削除。
y ヤンクする。yyで行をヤンク。ビジュアルモードで文字選択してからyで文字単位でヤンクが出来る。"1yでレジスタに1という名前を付けてヤンクすることが出来る。レジスタを汚したくないときは"0yとする。
p,P ペーストする。pでカーソル右からバッファを挿入、Pでカーソル左からバッファを挿入。
r,R リプレイスする。rでカーソルの1文字を置換、Rでカーソルから複数文字を置換出来る。
<C-w> ウィンドウを分割する。Ctrl + w sで上下に画面分割(split)。Ctrl + w vで左右に画面分割(vertical)。Ctrl + w wで画面を循環移動することが出来る。
:%s/[old]/[new]/gc 置換検索を行うことが出来る。cを外すことで確認無しでファイル中の全ての[old]を[new]に置換する。

その他の役立つ操作

行頭にインデントを挿入する

ノーマルモード中に>を2回入力するとカーソルのある行の行頭にインデントを挿入することができる。

複数行の行頭にインデントを挿入する

方法が2つあるのでそれぞれ記述する。

  1. ノーマルモードから<C-v>でビジュアルブロックモードに入り、インデントを入れたい行を選択し、Iで挿入モードに入り、Tabを入力後にEscで挿入モードを抜けることで複数行にインデントを挿入することが出来る。
  2. ノーマルモードからvでビジュアルモードに入り、インデントを入れたい行を選択し、>を2回入力することでインデントを挿入することが出来る。

全行をヤンクする

ノーマルモードでggyGと入力する。

独自拡張しているキーマッピング

nnoremap <C-tab> :tabn<CR>
nnoremap <C-S-tab> :tabN<CR>
nnoremap ZZ <Nop>
nnoremap ZQ <Nop>
キー 説明
<C-tab> Ctrl + Tabで次のタブへ移動する。
<C-S-tab> Ctrl + Shift + Tabで前のタブへ移動する。

ZZ(保存せず終了)とZQ(保存して終了)を無効化した。

MacVimユーザ向けの情報

ターミナルをファイラーとして使っている場合は.bashrcや.zshrcに以下の一行を記述しておくとmvim [ファイルのパス]というコマンドでターミナルからMacVimを直接起動することが出来る。

alias mvim='/Applications/MacVim.app/Contents/bin/mvim --remote-tab-silent "$@"'

参考
Vimで現在行から動かずに現在bufferの全内容をyank (copy) する
Vim:複数行のタブや文字の挿入、削除