Skip to content

Vim Commands

Yutaro Ishiwata edited this page Sep 12, 2021 · 32 revisions

基礎

.vimrcを再読込

:source ~/.vimrc

ファイルを開く

:e ファイルまでのパス

直前の操作を繰り返す(ドットコマンド)

.

モード切り替え

モーション   説明
i 挿入モード(カーソルの前から)
a 挿入モード(カーソルの後から)
A 挿入モード(行末から)
: コマンドライン
v ビジュアル
V 行単位
C-v 短形単位
/ 検索
o 新しい行を追加し挿入モードへ
R 上書きモード

コマンド

S = shift, C = control

基本コマンド

モーション 説明
dd カーソルがある1列削除
yy 1列コピー
p ペースト
u 操作を1つ戻す
C-u 操作を1つ前に戻す
J カーソルがある行に1つ下の行を連結する
ls バッファリスト
!ls シェルでls
call mkdir(“hoge”) ディレクトリの作成

頻出コマンド

モーション 説明
= 選択範囲をインデントを整形する
:retab vimrcで定めたtab幅に変換
e! ファイルリロード
bro ol + q + {番号} 過去に開いた履歴からファイルを開く(番号を指定して開く)

カーソル移動

モーション 説明
gg ページの一番上に行く
G ページの一番下に行く
w 単語単位で右
b 単語単位で左
H 表示されている画面の一番上の行に移動
M 表示されている画面の真ん中に行く
L 表示されている画面の一番下に行く
C-f 1ページ分下にスクロール
C-b 1ページ分上にスクロール
0 行の先頭へ(インデント無視して先頭へ)
^ 行の先頭へ(キーマッピングS-h)
$ 行の末尾へ(キーマッピングS-l)
+ 下の行の先頭へ
- 上の行の先頭へ
S-> インデントを深く(複数行可)
S-< インデントを浅く(複数行可)

ページ内検索

モーション 説明
/hoge [/]のあとの文字列を検索する(Control-f的なあれ)
n [/]で検索した文字列の次の検索候補に飛ぶ
N [/]で検索した文字列の前の検索候補に飛ぶ
* カーソルがある位置の単語を下方向に検索
# カーソルがある位置の単語を上方向に検索

ファイル横断検索

モーション 説明
:vim {pattern} {file} 指定したファイルの中身を検索する。
:vim {pattern} % 開いているファイルの中身を検索する。(カレントバッファ)
:vim {pattern} * カレントディレクトリにあるファイルすべてを検索する。
:vim {pattern} */ cw

置換

モーション 説明
:s/hoge/fuga カーソルがある行の一箇所をhogeからfugaに置換
:s/hoge/fuga/g カーソルがある行の全てをhogeからfugaに置換
:%s/hoge/fuga/g ファイル全てのをhogeからfugaに置換
:%s/hoge/fuga/gc ファイル全てから毎回確認してhogeからfugaに置換
:%s;hoge;fuga スラッシュを含む文字列の場合カンマで置換

補完

モーション 説明
C-p 補完(前方検索)
C-n 補完(後方検索)

その他

モーション 説明
:ascii カーソル上の文字のASCIIコードを表示

ファイル操作

モーション 説明
:new ファイルパス 上下分割して、新しいファイルの編集開始
:vne ファイルパス 左右分割して、新しいファイルの編集開始
ZZ 上書き保存し、viを終了
:w 内容を保存
:w ファイルパス 名前をつけて保存
:q! 保存せずに終了

ウィンドウ

モーション 説明
水平分割 :sp
垂直分割 :vs
左に移動 H
下に移動 J
上に移動 K
右に移動 L
回転 r
C-方向キー(h,j,k,l) アクティブウィンドウを移動

タブ

モーション 説明
:tabnew 新しいタブ作成
:tabe filename filenameをタブで開く
:tabclose タブを閉じる
gt 次のタブへ
gT 前のタブへ(キーマッピングtg)
{N}gt タブ番号を前置するとそこへ移動

削除系

モーション 説明
c VisualModeで選択した範囲を消してInsertModeで終わる
ci 括弧の中身だけを消す(例:[ci"] "この中だけが消えます")
ciw カーソルの下にある1単語を消してInsertModeに入る(英語・カタカナ・ひらがな・漢字で分けられる)
cit htmlのタグに囲まれている中を消します
dw カーソルから右にある単語を消す(NormalModeで終わる)
daw カーソルの下にある単語を消す
D カーソルから右にある文を全て消す
S カーソルのある1行を全て消してInsertModeにはいる

クリップボード利用

モーション 機能 説明
C-Insert コピー ビジュアルモードで選択したテキストをコピー。コピーしたテキストはクリップボードに入る。
C-Delete カット ビジュアルモードで選択したテキストをカット。カットしたテキストはクリップボードに入る。
S-Delete カット ビジュアルモードで選択したテキストをカット。カットしたテキストはクリップボードに入る。
S-Insert ペースト クリップボードのテキストをペースト。

ターミナル

ターミナル起動

:term
:term bash //bashを指定して起動

ターミナル終了

:exit
モーション 説明
C-w N 端末ノーマルモード(terminalの内容をテキストとして扱える。コピー可)
i 端末ジョブモード(端末ノーマルモードから抜ける。aでも可)
C-w "" ペースト(端末ジョブモードで動作する)

テキストオブジェクト

全選択

G V gg

後方削除

db x

前方削除

b dw

単語全体削除(.コマンドで連続削除可)

daw

カッコの中身を削除

db

指定文字まで移動

f{char}

指定行まで移動

{行番号}G

対応したカッコ

 %

複数行コメント

 C v 
 S i
 # or // etc ...
 esc

簡単な計算

C-r =

置換モードで文字上書き

f{char}
R{上書き文字}〈esc〉

プラグイン関連

dein.vim

入れたプラグインを確認

:Unite dein

インストール

:call dein#install()

Ag.vim

ファイル名で検索

:Ag -g ファイル名

一致したファイル名のみ

:Ag -l ファイル名

一致していないファイル名のみ

:Ag -L ファイル名

正規表現を無視

:Ag -Q 検索ワード

拡張子を指定して検索

Ag hoge -G \.pug$

NERDTree

ファイルツリー表示プラグイン

モーション 説明
o(enter) ファイルを開く
r 再読み込み
go ファイルを開き、カーソルはツリーに保持する
t タブで開く
T タブで開き、移動はしない
i 水平分割して開く
gi 水平分割して開き、移動はしない
s 垂直分割して開く
gs 垂直分割して開き、移動はしない
q NERDTreeを閉じる
I (大文字のアイ) 隠しファイルを表示する
f フィルタをONにする
F ファイルを表示する
B ブックマークを表示する
m ファイルのコピー、追加、削除、リネーム

Unite.vim

統合ユーザーインターフェイス

モーション 説明
space + b buffer の一覧
space + f カレントディレクトリのファイルとディレクトリ一覧
space + r + f
q Unite停止

fugitive.vim

Git操作用プラグイン

モーション 説明
Gstatus 新しい窓を作ってgit statusを表示
Gwrite 現在開いているソースをgit add
Gread 現在開いているソースの直前のコミット時のソースを表示
Gblame 現在のソースのgit blameを表示

ctrlp.vim

あいまい検索プラグイン

モーション 説明
C-p 起動
Enter ファイルを開く
C-t 新しい画面で開く

その他

エラー対処

上書きするには 'fenc' を空にしてください' みたいなエラーが出たら. write error, conversion failed (make 'fenc' empty to override) 下記を実行してfencの中を空にする

:set fenc=

:set expandtab設定時にtabを入力する

C-v <Tab>

gvimの表示言語を変更 コントロールパネル->システムの詳細設定->環境変数 ここに新規で、変数名:"LANG" 変数値:"en_US/CP932" を追加する。

参考リンク:

Vim初心者に捧ぐ実践的入門
よく使う Vim のコマンドまとめ
VimmerなGit使いはfugitive.vimを今すぐ入れたほうがいい
Vimで高速で移動~プラグインなしでの移動まとめ~
覚えておきたい Vim コマンド 備忘録