MyDocs

Vimの操作

vim のプラグインは無しで、 VSCode の vim 拡張でできることに絞った。

モードについて

ノーマルモード

移動

コマンド 動作
k 上に移動
j 下に移動
h 左に移動
l 右に移動
w 次の単語の先頭に移動
b 前の単語の戦闘に移動
e 単語の末尾に移動
ge 前の単語の末尾に移動
f{char} 次の {char} まで移動
<shift>f{char} 前の {char} まで移動
; 次の {char} まで移動
, 前の {char} まで移動
0 行頭へ移動
$ 行末へ移動
<shift>f ページ送り
<shift>b ページ戻し
zz カーソルの行を中央にする
% 体操する文字 ( 括弧 ) へ移動
gg ファイル先頭へ移動
<shift>g ファイル末尾へ移動
{count}<shift>g { count } 行目に移動

削除

コマンド 動作
x 文字を削除
dd カーソルのある行をすべて削除
<shift>d カーソルの位置から行の末尾までを削除
db カーソルの位置から単語の先頭まで削除
de カーソルの位置から単語の末尾まで削除
daw カーソルの位置の単語をスペース含めて削除
diw カーソルの位置の単語をスペース含めず削除

ヤンク/プット

コマンド 動作
yy 行をコピー
yiw カーソルの単語をコピー
p ヤンクしているものをペースト

検索

コマンド 動作
/{word} {word} を検索 ( ハイライトにする )
n 次の {word} へ移動
N 前の {word} へ移動
* カーソルの下の単語をハイライト

ビジュアルモード

コマンド 動作
v ビジュアルモードを有効にする
<shift>v 行指向でビジュアルモードを有効にする
gv 前回のビジュアルモードを再度有効にする
o ( ビジュアルモードで ) 端点に移動
<shift>v 矩形選択
u ( ビジュアルモードで ) 文字を小文字に変換する
<shift>u ( ビジュアルモードで ) 文字を大文字に変換する

インサートモード

コマンド 動作
o 下の行に改行を入れてからインサートモードを有効にする
<shift>o 上の行に改行を入れてからインサートモードを有効にする
ci' 「'」で囲まれた文字を削除してからインサートモードを有効にする
ci" 「"」で囲まれた文字を削除してからインサートモードを有効にする
ca' 「'」を含む囲まれた文字を削除してからインサートモードを有効にする
ca" 「"」を含む囲まれた文字を削除してからインサートモードを有効にする
<shift>i 行頭へ移動してからインサートモードを有効にする
<shift>a 行末へ移動してからインサートモードを有効にする
s カーソルの位置の文字を削除してからインサートモードを有効にする
r{char} カーソルの位置の単語を{char}に置換する
<ctrl>o ノーマルモードのコマンドを実行する
<shift>j ( ノーマルモードで ) 下の行を現在の行の末尾に結合する

コマンドラインモード

コマンド 動作
:w 保存
:q ファイルを閉じる
:tabnew タブを開く
gt or gT タブを移動
:sp 画面を横に分割
:vsp 画面を縦に分割
<ctrl>w{h,j,k,l} ウィンドウを移動
:noh ハイライトを解除
:sort ( ビジュアルモードで ) ソートする

繰り返し

コマンド 動作
. 直前の動作を繰り返す
u 直前の動作を取り消す

レジスタ

"{ register } で指定。

無名レジスタ

何も指定しなければ " に格納される。

ブラックホールレジスタ

_ に格納する.取り出しはできない。

削除と組み合わせることでレジスタに残さず文字を削除できる。

レジスタの中身を見る

コマンドモードで :reg

マクロ

q{ register } から q までの動作をキャプチャする。

@{ register } でキャプチャした動作を再生 @@ 直前のマクロを再実行 { count }@{ register } { count } 回マクロを実行。