Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5657

vi(vim)コマンドメモ

$
0
0

1. 起動

ファイルを指定して起動

vi <ファイル名> 

複数ファイルを指定して起動

vi <ファイル名1> <ファイル名2> … <ファイル名n>

複数のファイルを指定してタブで分割して起動

vi -p <ファイル名1> <ファイル名2> … <ファイル名n>

読み込み専用で起動

vi -R <ファイル名> 
view <ファイル名> 

初期カーソル位置を最後の行にして起動

vi + <ファイル名> 

初期カーソル位置を指定行にして起動

vi +行数 <ファイル名> 

初期カーソル位置を文字列が最初に見つかった行にして起動

vi +/文字列 <ファイル名>

リカバリモードで起動(スワップファイルを起動)

vi -r <ファイル名>

2. 複数ファイルを開いたときのファイルの移動

コマンド短縮コマンド内容
:next:n次のファイルへ移動
:next!:n!次のファイルへ強制的に移動
:wnext:wn現在のファイルを保存して次のファイルへ移動
:previous:prev前のファイルへ移動
:previous!:prev!前のファイルへ強制的に移動
:wprevious:wp現在のファイルを保存して前のファイルへ移動
:first:fir先頭のファイルへ移動
:first!:fir!先頭のファイルへ強制的に移動
:last:la最後尾のファイルへ移動
:last!:la!最後尾のファイルへ強制的に移動
:rew-先頭のファイルへ移動
:rew!-先頭のファイルへ強制的に移動
:rewind-現在のファイルを保存して先頭のファイルへ移動
:rewind!-現在のファイルを保存せず先頭のファイルへ移動
:e#-直前の編集ファイルへ戻る
:arg-編集中のファイルとファイルの一覧を確認

3. カーソル移動

コマンド1コマンド2コマンド3内容
h[BackSpace]左へ移動 [n有効]
j[Ctrl]+ n下へ移動 [n有効]
k[Ctrl]+ p上へ移動
l[Space]右へ移動
[数字]h[数字]←[数字][BackSpace]数字分左へ移動
[数字]j[数字]↓[数字][Ctrl]+ n数字分下へ移動
[数字]k[数字]↑[数字][Ctrl]+ p数字分上へ移動
[数字]l[数字]→[数字][Space]数字分右へ移動
コマンド内容
^現在行の行頭の空白を飛ばした先頭文字列に移動
0現在行の行頭に移動
$現在行の行末に移動
Gファイルの最終行へ移動
ggファイルの先頭行へ移動
+次行頭の空白を飛ばした先頭文字列に移動
-前行頭の空白を飛ばした先頭文字列に移動
[Enter]次行の先頭位置へ移動
[数字]$(数字-1)行下の行末に移動
[数字]G(数字)行の行頭に移動
[数字]+(数字)行下の空白を飛ばした先頭文字列に移動
[数字]-(数字)行上の空白を飛ばした先頭文字列に移動
[数字][Enter](数字)行下の行頭へ移動
:[数字](数字)行へ移動
コマンド内容
w1ワード次へ移動
b1ワード前へ移動
e単語の末尾へ移動(すでに単語末尾なら次の単語の末尾へ)
[数字]w(数字)word分次へ移動
[数字]b(数字)word分前へ移動
[数字]e(数字)word分次の単語の末尾へ移動
コマンド内容
(文頭(ブロック単位)に移動
)次文頭(ブロック単位)に移動
{前段落に移動
}次段落に移動

4. 画面移動

コマンド内容
Hカーソルを画面先頭へ移動
Mカーソルを画面中央へ移動
Lカーソルを画面最終行へ移動
[Ctrl] + Dカーソルを1/2画面下へ移動
[Ctrl] + Uカーソルを1/2画面上へ移動
[Ctrl] + Fカーソルを1画面下へ移動
[Ctrl] + Bカーソルを1画面上へ移動
[数字]Hカーソルを画面先頭から(数字)行目へ移動
[数字]Lカーソルを画面最終行から(数字)行目へ移動
[数字][Ctrl] + Dカーソルを(数字)行下へ移動
[数字][Ctrl] + Uカーソルを(数字)行上へ移動
[数字][Ctrl] + Fカーソルを(数字)画面下へ移動
[数字][Ctrl] + Bカーソルを(数字)画面上へ移動
z[Enter]現在のカーソル位置が画面のトップになるようにスクロール
zz現在のカーソル位置が画面の中央になるようにスクロール

5. INSERTの入力モードへ移行

コマンド内容
iカーソルの左から入力開始
I行頭から入力開始
aカーソルの右から入力開始
A行末から入力開始
oカーソル行の下に空行を挿入し、その行頭から入力開始
Oカーソル行の上に空行を挿入し、その行頭から入力開始

6. REPLACEの入力モードへ移行

コマンド内容
Rカーソルから上書きで入力開始

7. 文字を削除してINSERTの入力モードへ移行

コマンド内容
sカーソル位置の一文字を削除して入力開始
Sカーソル位置の行を削除して入力開始
  • 2sのように先頭に数字を入力することで、「カーソル位置の二文字を削除して入力開始」のように、数字分の動作をさせることができます。
コマンド内容
clカーソル位置の一文字を削除して入力開始
ccカーソル位置の行を削除して入力開始
c^カーソル位置の直前から行頭の空白を飛ばした先頭文字列まで削除して入力開始
c0カーソル位置の直前から行頭まで削除して入力開始
c$カーソル位置から行末まで削除して入力開始
cGカーソル位置の行から文末まで削除して入力開始
cwカーソル位置から次ワードの直前まで削除して入力開始
cbカーソル位置からワードの先頭まで削除して入力開始
ceカーソル位置からワードの最後まで削除して入力開始
cWカーソル位置から区切り文字を飛ばして次ワードの直前まで削除して入力開始
  • コマンドの2文字目はカーソル移動のコマンドを使用できます。(上記以外にも組み合わせでいろいろできます。) また、2cwのように先頭に数字を入力することで、「カーソル位置から2つ先のワードの直前まで削除して入力開始」のように、数字分の動作をさせることができます。

8. コマンドモードへ移行

コマンド内容
[Esc]コマンドモードへ移行

9. 削除

コマンド内容
xカーソル位置の一文字を削除
dlカーソル位置の一文字を削除
ddカーソル位置の行を削除
d^カーソル位置の直前から行頭の空白を飛ばした先頭文字列まで削除
d0カーソル位置の直前から行頭まで削除
d$カーソル位置から行末まで削除
dGカーソル位置の行から文末まで削除
dwカーソル位置から次ワードの直前まで削除
dbカーソル位置からワードの先頭まで削除
deカーソル位置からワードの最後まで削除
dWカーソル位置から区切り文字を飛ばして次ワードの直前まで削除
  • コマンドの2文字目はカーソル移動のコマンドを使用できます。(上記以外にも組み合わせでいろいろできます。) また、2dwのように先頭に数字を入力することで、「カーソル位置から2つ先のワードの直前まで削除」のように、数字分の動作をさせることができます。

10. コピー

コマンド内容
ylカーソル位置の一文字をコピー
yyカーソル位置の行をコピー
y^カーソル位置の直前から行頭の空白を飛ばした先頭文字列までコピー
y0カーソル位置の直前から行頭までコピー
y$カーソル位置から行末までコピー
yGカーソル位置の行から文末までコピー
ywカーソル位置から次ワードの直前までコピー
ybカーソル位置からワードの先頭までコピー
yeカーソル位置からワードの最後までコピー
yWカーソル位置から区切り文字を飛ばして次ワードの直前までコピー
  • コマンドの2文字目はカーソル移動のコマンドを使用できます。(上記以外にも組み合わせでいろいろできます。) また、2ywのように先頭に数字を入力することで、「カーソル位置から2つ先のワードの直前までコピー」のように、数字分の動作をさせることができます。

11. ペースト

コマンド内容
pコピーした内容をカーソルの後にペースト
Pコピーした内容をカーソルの前にペースト

12. undoとredo

コマンド内容
uundo(直前の編集作業の取り消し)
[Ctrl] + rredo(undoの取り消し)

13. 検索

コマンド内容
/文字列 + [Enter]カーソルの後方に文字列を検索
?文字列 + [Enter]カーソルの前方に文字列を検索
n次の検索該当文字列へ移動
N前の検索該当文字列へ移動
/ + [Enter]次の検索該当文字列へ移動
? + [Enter]前の検索該当文字列へ移動

14. 置換

コマンド内容
r[文字]カーソルの1文字を入力した文字に置換
[数字]rカーソルから数字分の文字を入力した文字で置換
コマンド内容
:s/文字列1/文字列2/[Enter]カーソル行の最初の「文字列1」のみを「文字列2」に置換
:s/文字列1/文字列2/g[Enter]カーソル行の「文字列1」を全て「文字列2」に置換
:s/文字列1/文字列2/c[Enter]カーソル行の最初の「文字列1」を「文字列2」に置換(確認有り)
:[行数]s/文字列1/文字列2/[Enter]指定行で最初の「文字列1」のみを「文字列2」に置換
:[行数]s/文字列1/文字列2/g[Enter]指定行で「文字列1」を全て「文字列2」に置換
:%s/文字列1/文字列2/g[Enter]全ての行で「文字列1」を全て「文字列2」に置換
:[開始行],[終了行]s/文字列1/文字列2/[Enter]指定範囲行内で各行の最初の「文字列1」を「文字列2」に置換
:[開始行],[終了行]s/文字列1/文字列2/g[Enter]指定範囲行内の「文字列1」を全て「文字列2」に置換
:[開始行],$s/文字列1/文字列2/g[Enter]指定開始行から最終行までの「文字列1」を全て「文字列2」に置換
&直前のsコマンドの繰り返し
:&[Enter]直前のsコマンドの繰り返し
コマンド内容
~カーソルの文字を小文字から大文字、大文字から小文字に変換
[数字]~カーソルから指定文字数分の文字を小文字から大文字、大文字から小文字に変換
コマンド内容
J現在行と直下の行の改行をスペースに置換
[数字]J現在行から指定行数分下の行の改行をスペースに置換

15. ファイル操作

コマンド内容
:w[Enter]上書き保存
:w![Enter]強制上書き保存
:w ファイル名[Enter]ファイル名で保存
:w! ファイル名[Enter]ファイル名で強制保存
:[開始行],[終了行] w[Enter]開始行から終了行までを保存
:wq[Enter]上書き保存して終了
:q[Enter]終了
:q![Enter]保存せずに終了
:e[Enter]現在開いているファイルを再度読込み
:e![Enter]現在開いているファイルを強制的に再度読込み
:e ファイル名[Enter]ファイルを編集用に読込み
:e! ファイル名[Enter]ファイルを編集用に強制的に読込み
コマンド内容
:e ++enc=euc-jp[Enter]文字コードをeuc-jpに設定
:e ++enc=shift_jis[Enter]文字コードをshift_jisに設定
:e ++enc=utf-8[Enter]文字コードをutf-8に設定
コマンド内容
:e ++ff=dos[Enter]文字コードをdos(CR + LF)に設定
:e ++ff=mac[Enter]文字コードをmac(CR)に設定
:e ++ff=unix[Enter]文字コードをunix(LF)に設定

16. setコマンド

コマンド省略内容
:set number[Enter]:set nu[Enter]行番号を表示
:set nonumber[Enter]:set nonu[Enter]行番号を非表示
:set all[Enter]-すべてのオプションを表示
:set fenc?[Enter]-ファイルエンコードの確認
:set ff?[Enter]-改行コードの確認

以上


Viewing all articles
Browse latest Browse all 5657

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>