たくさん覚えたけど多分忘れるから今までの記事もまとめてメモ(チートシートと呼ぶほどの物なのか疑問)

カーソルがある行を中央にする

1
zz

Vim上で計算

1
2
// 入力モードで
<C-r>=[計算式]

Vimでソート

1
範囲選択→:sort

Vimでスクレイピング

1
:e [URL]

範囲指定のやり直し

1
2
// ビジュアルモードで
o

現在のファイル名

%は現在のファイル名になるので、色々使える

1
2
3
4
5
%

:w %.bak // ファイル名末尾に「.bak」をつけて保存
:!php % // 開いてるphpファイルを実行
:!git add % // 開いてるファイルをgit add

強制上書き

Apache設定ファイルとかをsudo忘れた時に

1
:w !sudo tee %

読み取り専用のセットと解除

1
2
3
4
5
// セット
:set ro

// 解除
:set noro

コマンドのヒストリ

1
q:

ヤンクレジスタ

無名レジスタの内容が消えちゃった時に

1
"0p

マクロを使う

1
2
3
qa			// 記録開始
q // 記録終了
@q // 再生

ある文字列を含む行のみを表示

1
:v/[文字列]/d

ある文字列を含む行のみを削除

1
:g/[文字列]/d

文字化けした場合

文字化けしないコードでファイルを読みなおしする

1
:e ++enc=shift-jis

正しい文字コードを指定

1
:set fenc=utf-8

正しい文字コードで保存

1
:w

vim以外:nkfコマンドで文字コード変更

1
2
// sjisをutf-8に
cat sjis.txt | nkf -w

2バイト文字を検索

ノーマルモードで、

1
/[^\x01-\x7E]

2バイト文字を置換

同じくノーマルモードで、

1
2
3
4
5
// 2バイト文字を削除
:%s/[^\x01-\x7E]//g

// 2バイト文字を「※」に置換
:%s/[^\x01-\x7E]/※/g

行頭を一括編集

1
`C-v`で矩形選択後、`S-i`→入力したい文字

行末を一括編集

1
`C-v`で矩形選択後、`$`→`S-a`→入力したい文字

スワップファイル(.swp)を作成しない

1
set noswapfile

バックアップファイル(~)を作成しない

1
set nobackup

アンドゥファイル(.un~)を作成しない

1
set noundofile

カーソル位置にコマンドの出力を挿入

1
:r !コマンド

標準出力をVimで受け取る

columnコマンドでターミナル上でCSVを整形しつつVimで開くメモ

1
$ echo "hoge" | vim -