vim7を入門

以前viを集中的に覚えたことがあった。そのときはFreeBSD上のnviという元祖viのクローン(つまりvimの機能はない)を使って覚えた。C言語の学習するときにviだけ使っていたら、体が覚えてくれた。

そのころのvimはversion3くらいでEUC-JPに対応してたと思うが、日本語扱うとかマルチウィンドウには当時はEmacs(Mule)のほうが便利だったのでvimは覚えなかった。

その後は、viで設定ファイルを編集、プログラミングや日本語文章にはEmacs
を使っていた。

しかしgit入門してみると、git commitのコメント文をEmacsで入力するのに違和感がある。viで入力したい。しかも日本語でコメントを入力したい。画面の色分けもしてほしい。

ならvimを使えるようにしよう。

でもvimはviといくつか違いがあるので、いくつか覚えなおさなくてはならない。vimtutorやっても使わないとすぐに忘れてしまうので、ここにメモする。


vimtutor のバージョンは1.7

1.1  ESC hjkl (カーソル移動)
1.2  :q! (強制終了)
1.3  x (文字削除)
1.4  i (insertion)
1.5  A (append)
1.6  :wq (保存終了)

2.1  dw w (wordの削除, word単位の移動)
2.2  d$     (行末まで削除)
2.3  d w e $   (範囲指定削除, 次word開始位置, 現word終了位置, 改行位置)
2.4  2w 3e 0  (回数指定, 行頭移動)
2.5  d2w (回数指定)
2.6  dd 2dd (行削除)
2.7  u U Ctrl+R (アンドゥ)

3.1 p (ペースト)
3.2 r (1文字修正) xとの違いはモードが「1文字入力するまで」insモードに変わること
3.3 ce (correct 修正) deとの違いはモードがinsモードに変わること
3.4 c c$

4.1 Ctrl+G G gg 485G (行位置確認, 開始行へ移動, 最終行へ移動, 指定行へ移動)
4.2 / → n N, ? → n N, Ctrl+O, Ctrl+I (検索, 移動前の位置に戻る)
4.3 % (対応するカッコへ移動)
4.4 :s/thee/the/g %s/thee/the/gc (置換)

5.1 :!ls (外部コマンド)
5.2 :w TEST, !rm  (ファイル書き出し)
5.3 v :'<,'>w, w d (選択、選択範囲書き出し、選択範囲削除)
5.4 :r TEST, :r !ls (retrieve 部分読み込み)

6.1 o O (改行してInsertモードに)
6.2 a (append)
6.3 R (replace 上書きモード)
6.4 v y , yw (コピー)
6.5 :set hls is, :set nohls, set noic, /ignore\c

7.1 :help w, Ctrl-W Ctrl-W (ヘルプ、ウィンドウ移動)
7.2 :e ~/.vimrc
7.3 :e TE[Ctrl-D] , :e TE[TAB] (補完)

vimのバージョンは
itouhiro@sf-usr-shell:~/mysite$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jul 12 2010 02:31:36)
Included patches: 1-445


まずvim使う前に設定してvimの機能を使えるようにしておく。

set nocompatible   "use vim functions
scriptencoding utf-8
set encoding=utf-8
set fileencodings=utf-8,cp932,euc-jp,default,latin

" https://sites.google.com/site/fudist/Home/vim-nihongo-ban/-vimrc-sample
set nowritebackup
set nobackup
"ヒストリの保存数
set history=50
"日本語の行の連結時には空白を入力しない
set formatoptions+=mM
"□や○の文字があってもカーソル位置がずれないようにする
set ambiwidth=double

"検索の時に大文字小文字を区別しない
"ただし大文字小文字の両方が含まれている場合は大文字小文字を区別する
set ignorecase
set smartcase
"検索時にファイルの最後まで行ったら最初に戻る
set wrapscan
"インクリメンタルサーチ
set incsearch
"検索文字の強調表示なし
set nohlsearch

"スプラッシュ(起動時のメッセージ)を表示しない
set shortmess+=I
"エラー時の音とビジュアルベルの抑制(gvimは.gvimrcで設定)
set noerrorbells
set novisualbell
set visualbell t_vb=
"Windowsでディレクトリパスの区切り文字表示に / を使えるようにする
set shellslash
"画面最後の行をできる限り表示する
set display=lastline
"Tab、行末の半角スペースを明示的に表示する
set list
set listchars=tab:^\ ,trail:~
"Tabキー押下でスペース挿入
set expandtab
"タブ文字を入力した際にタブ文字の代わりに挿入されるホワイトスペースの量
set softtabstop=4
">> 等のコマンドや自動インデントの際に使う1レベル分のインデント量
set shiftwidth=4

" ハイライトを有効にする
syntax on
colorscheme desert

" 閉じ括弧を入力したら、対応する括弧にカーソルが一瞬移動
set showmatch