vimのおすすめしたい小技集


vimを業務で使い始めて約半年がたちました!
その過程で私が手にしたよく使う小技をいくつか紹介します!

検索系

現在のカーソル上の文字を検索

編集モードで検索したい文字列にカーソルを合わし*を押してあげるだけです!

複数の文字を検索

|を使うことで複数の文字列を検索することができます!

/検索文字列\|検索文字列2

検索で役立つvimrcの設定

.vimrc
set incsearch " インクリメンタルサーチ. 1文字入力毎に検索を行う
set ignorecase " 検索パターンに大文字小文字を区別しない
set smartcase " 検索パターンに大文字を含んでいたら大文字小文字を区別する
set hlsearch " 検索結果をハイライト

vimgrepとQuickfixで検索結果一覧を表示!

通常の検索も便利ですが、vimgrepとQuickfixを用いた検索は検索結果一覧を表示できるの便利です!
画面移動を行ってEnterを押すだけで対象の行まで移動してくれるので非常にオススメです!

コマンド

編集モードで下記を入力
:vim 検索文字列(正規表現も使えます!) 検索対象ファイル

vimrcの設定

.vimrc
" vim grepすると自動的にあたらしいウィンドウで検索結果一覧を表示する
autocmd QuickFixCmdPost *grep* cwindow

ファイル内検索

現在開いているファイル内で文字列を検索する際は%を使用します!

編集モードで下記を入力
:vim function %

別ファイル内の文字列検索

srcディレクトリ配下のファイルから特定の文字列を検索する場合

編集モードで下記を入力
:vim function src/*

移動系

タイプした文字が次に出てくるところに移動

編集モードでfを押した後に任意の文字列を入力すると、その文字列が次に現れるところに移動します。

(まで移動したい時:f(

画面移動

半画面下:Ctrl + d
半画面上:Ctrl + u
ファイルトップ:gg
ファイルの最後:G

入力&削除系

1行削除:dd
1単語削除:de
削除した行をペースと: dd + p
カーソルより後ろの文字列削除:D

{}'', ()の中の文字をまとめて削除

di'''ないの文字をまとめて削除します!
また、削除して入力モードに入りたい婆はci'と入力します。
()内を削除したい場合はdi(, ci(に変わるだけです!

個人的にはコレがかなり優秀です!
DBのIPや条件文を修正する時に大活躍してます

ヴィジュアルモード

編集モードでvを押すと、ヴィジュアルモードになります。
その状態でカーソルを移動、yを押すと範囲コピーができます!
yではなくxを押すと選択した範囲を切り取れます!

矩形選択最高です

Ctrl + vで矩形選択になります。
その状態で、yを押すと選択した範囲をコピーします!

また、選択している状態でIを入力後、特定の文字を入力しESCすると選択した箇所に入力した文字を入れてくれます!

vimの動作環境に関する小技

カラースキーマ編

molkaiを設定した時、macの時は色鮮やかなカラースキーマが設定されますが、別の環境だと色合いがおかしいときがあります。そんな時はTERM変数を確認してください!

macでのvim:カラースキーマmolokai

debianでのvim:カラースキーマmolokai

TERM変数について

TERM変数は扱う端末の種類を表しています。

mac, debian, centosなど、linux系のOSでTERM変数をechoしてあげると、異なる値が出てきます。

mac
$ echo $TERM
xterm-256color
debian
root@1896d623ecce:/# echo $TERM
xterm
root@1896d623ecce:/#
centos7
[root@c7154b6a2960 /]# echo $TERM
xterm
[root@c7154b6a2960 /]#

termとxterm-256colorではcolorが違うということがわかります!

xterm-256color: colors#256, cols#80, it#8, lines#24, pairs#32767,
xterm: colors#8, cols#80, it#8, lines#24, pairs#64,

vimでカラースキーマを使うにあたり、TERM変数は重要

この流れだと、わかるとおもいますがxtermだと256colorに対応していないため綺麗なカラースキーマが実現されません。

そのため、新しく環境を用意した際などはTERM変数を確認するようにしましょう。
echoでも問題ないですしenvコマンドを打つと登録されている環境変数一覧を確認できます!

debian
root@1896d623ecce:/# env
HOSTNAME=1896d623ecce
NJS_VERSION=1.13.6.0.1.14-1~stretch
NGINX_VERSION=1.13.6-1~stretch
PWD=/
HOME=/root
no_proxy=*.local, 169.254/16
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env

その後、TERM変数にxterm-256colorが入るように設定してあげましょう

debian
root@1896d623ecce:/# echo export TERM=xterm-256color >> ~/.bashrc