535行目: 535行目:


==注意==
==注意==
上記以外のさらに細々とした vimコマンドやオプションを覚え始めると「手段が目的に」なりそう。とりあえず上記を十分に使いこなせれば十分。そもそも時代が時代なのでタイミングが来たらIDEに移行する。
上記以外のさらに細々とした vimコマンドやオプションを覚え始めると「手段が目的に」なりそう。とりあえず上記を十分に使いこなせれば十分。あとこれはあくまでも城管理のための手段でアプリ開発ではない。アプリ開発ツールはIDE。

2023年11月14日 (火) 14:10時点における版

天才ビル・ジョイが自身のプログラミング作業のために作ったエディタ。城の管理運営のために必須。

初期設定

コマンド 説明
vi ./vimrc オプションを記載
set -o vi bash を viモードに変更
# vi .vimrc
set number
set nowrap
set tabstop=4
set shiftwidth=4
set autoindent
set background=dark

syntax enable
colorscheme solarized
let g:solarized_termtrans = 1

環境とシェル

コマンド 説明
:set 現在セッションのオプションを表示
:set nu (number) 行番号表示をオン
:set tabstop=4 タブの長さ
:set shiftwidth=4 インデントシフトの初期値
:set autoindent 自動インデントモード
:set hlsearch 検索時のハイライト表示をオン
:set wrap 長文を折り返す
:set showmatch ()や{}の対応表示をオン
:set list タグや空白などの見えない文字が確認できる
:set all 全てのオプションを表示
:sh, ^D シェルを起動、終了
:!command コマンドを実行
:n,m!command n行目から m行目まで command でフィルタ処理
:r !date 日時情報がカレント行に書き込まれる

起動とファイル操作

コマンド 説明
vi file1 file2 file3 file1とfile2をオープン
:r file1 現在行直下にfile1を全てコピー
:5r file1 5行目にfile1を全てコピー
:w! newfile 書き込み権限がない場合の一時しのぎ

画面分割

コマンド 説明
^w s, :sp file (split) file を横分割で開く
^w v, :vs file (Verticle Split) file を縦分割で開く
^w o, :on (only) 編集中ファイル以外を全て閉じる
^w q 現在のウィンドウを閉じる
Ctrl + w + j/k/l/h 下/上/右/左のウィンドウに移動
Ctrl + w + [+/-] ウィンドウの横軸を1行広げる/縮める
Ctrl + w + [3>/3<] ウィンドウの縦軸を3つ広げる/縮める
:ar 起動中のファイルをリスト表示
:n (next) 次のファイルへ移動
:rew 先頭のファイルへ移動
:last 最後のファイルへ移動
:e file2 file2を編集する
:e#, Ctrl + ^ 直前のファイル編集へ戻る

テキスト移動

コマンド 説明
h, j, k, l 左、下、上、右
w, W, b, B 前、後の単語(大文字は大きいジャンプ)
e, E 単語の末尾(大文字は大きいジャンプ)
), ( 次、前の文章へ
}, { 次、前の空行で区切られたブロックへ
% 括弧の終端へ

行移動

コマンド 説明
[Enter] 次の行
0, ^, $ カレント行の先頭、文字先頭、末尾
+ 下の行の文字先頭
- 上の行の文字先頭
H (Head) 画面の最上行
M (Middle) 画面の中央行
L (Lass) 画面の最下行
nH, nL 上、下から n行目
z[Enter] カーソル位置を画面の一番上に
z. カーソル位置を画面中央に
z- カーソル位置を画面の一番下に

スクロール

コマンド 説明
Ctrl + y, Ctrl + e 1行ずつ上、下にスクロール
Ctrl + u, Ctrl + d 半画面ずつ上、下にスクロール
Ctrl + b, Ctrl + f 1画面ずつ上、下にスクロール

検索

コマンド 説明
tx カレント行内でカーソルより後方にある x の直前にジャンプ
Tx カレント行内でカーソルより前方にある x の直前にジャンプ
fx カレント行内でカーソルより後方にある x にジャンプ
Fx カレント行内でカーソルより前方にある x にジャンプ
;, , カレント行の文字検索を前方、後方に繰り返す
/pattern 前方にパターンを検索
?pattern 後方にパターンを検索
* カーソル上のテキストを検索
n, N 直近の検索を前方、後方に繰り返す

置換

コマンド 説明
:s/old/new/ カレント行の最初の old を new に置換
:s/old/new/g カレント行の全ての old を new に置換
:5s/old/new/g 5行目の全ての old を new に置換
:23,44s/old/new/g 23~44行目内の全ての old を new に置換
:%s/old/new/, :1,$s/old/new/ ファイル全ての old を new に置換
:%s/old/new/c ファイル全ての old を逐一確認しながら new に変換
:%s/\(That\) or \(this\)/\2 or \1/ ホールドバッファ1,2によりthis or That と置換
~ 大文字/小文字に変換

パターンマッチング(正規表現)による高度な置換は『vi入門83~107p』を確認

ジャンプ

コマンド 説明
Ctrl + G ファイル名、状態、カレント行番号の表示
gg ファイル先頭にジャンプ
G ファイル末尾にジャンプ
23G 23行目にジャンプ
:N N行目にジャンプ
mx 現在位置を x でマーク
'x x がある行の先頭にジャンプ
`x x にジャンプ

挿入と変更

コマンド 説明
i, a カーソルの前、後にテキストを挿入
I, A 行の先頭、末尾にテキストを挿入
O, o カーソルの上、下にテキストを挿入
s, S 1文字、カレント行をテキストに変更
r 一文字変更
cw 単語変更
cc カレント行を変更
c + [motion] モーションで指定した場所までを変更
c + nG カレント行からn行目までを変更
C 行末まで変更
R 重ね書き
10i#- #- の組み合わせを10回入力。Vim によるテキスト編集はプログラミング
Ctrl + t (挿入モード)右にインデント
Ctrl + d (挿入モード)左にインデント
>> 右にインデント
3<< 3行まとめて左にインデント
:5,10 << 5~10行まとめて右に2インデント

削除とヤンク

コマンド 説明
Ctrl + w, Ctrl + u 入力中の単語を削除。入力中の行を削除
x, X 文字を前方、後方に削除
dw 単語を直後の空白とセットで削除
de 単語のみを削除
dd カレント行を削除
D 行末までを削除
d + [motion] モーションで指定した場所までを削除
d + 7G カレント行から7行目までを削除
yw 単語のヤンク
yy, Y カレント行のヤンク
y + [motion] モーションで指定した場所までをヤンク
y + 7G カレント行から7行目までをヤンク
P, p 削除、ヤンクしたテキストをカーソルの前、後にペースト

レジスタの活用

コマンド 説明
:reg レジスタ一覧
"a5Y レジスタa にカレント行から5行を登録
"AY レジスタa にカレント行を追記
"bp レジスタb の内容をペースト
Ctrl + r + a (挿入モードで)レジスタa をペースト
Ctrl + r + (挿入モードで)クリップボードをペースト

exエディタの活用

コマンド 説明
%, 1,$ ファイル内全ての行
0, ., $ ファイルの先頭、カレント行、最終行
x-n xのn行前
x+n xのn行後
Q exエディタを起動
:vi viモードへ戻る
:3,5d 3行目〜5行目を削除
:.,$d カレント行からファイル最終行までを削除
:3,5m0 3行目〜5行目をファイル先頭に移動
:3,5m10 3行目〜5行目を10行目に移動
:13itext. 13行目に text を挿入
:12ctext. (change) 12行目を text で置き換える

その他

コマンド 説明
. 直近の編集コマンドの繰り返し
v, V 文字、行の選択
ggVG ファイル内全てを選択
u, U アンドゥ、カレント行の復元
Ctrl + r リドゥ
J 2行の連結
:ab IBM International Business Machines IBM を入力すると勝手に正式名称を展開してくれる
:ab ab に登録されている略語の一覧
:unab ab に登録されている略語を解除

保存と終了

コマンド 説明
ESC, Ctrl + [ 挿入モードへ
:e! 一番最初の状態へ戻す
:w, :w!, :wa 保存、強制的に保存、オープンしているファイルを全て保存
:3,5w newfile 3〜5行目を newfile として保存
:3,5w>>file 3〜5行目を file に追記
ZZ 保存して終了
:q, :q! 終了、変更を破棄して終了
Q viモードを終了して exモードに切り替える
:vi viモードに戻る

注意

上記以外のさらに細々とした vimコマンドやオプションを覚え始めると「手段が目的に」なりそう。とりあえず上記を十分に使いこなせれば十分。あとこれはあくまでも城管理のための手段でアプリ開発ではない。アプリ開発ツールはIDE。