[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

Windows版 Vimチートシート 備忘録 2024/10

備忘録の為、まとまりが悪かったり重複があるかもしれませんが参考になれば幸いです

vimrcの設定は下のリンク
jikoryuu.hatenablog.com

============================================================================
help - Vim日本語ドキュメント
https://vim-jp.org/vimdoc-ja/index.html
ライバル Emacs
============================================================================
このドキュメントの状態 最新版 2024/10
.vimrcの最新版 https://jikoryuu.hatenablog.com/entry/2024/10/03/124225
============================================================================
■新しいファイルを作成する
新規作成[:e ファイルパス]

■ファイルを開く
[:e ファイルパス]

■保存
上書き保存[:w/:write]
別名で保存[:w ファイルパス/:write ファイルパス]
別名で保存して編集する[:sav ファイルパス/:saveas ファイルパス]

■保存して終了
[:wq]
ノーマルモードで[ZZ]

■終了
[:q]

■強制終了(保存しない)
[:q!]

=============================================================================
■文字コード
■確認する
[:set enc?]
cp932/sjis/utf8/utf-8/euc-jp

■文字コードを指定する
[:set fileencoding=文字コード/:set fenc=文字コード]
※文字コードの主なものはiso-2022-jp,ucs-bom,sjis,utf-8,euc-jp,cp932,default,latin1

■文字コードの読み直し
[:e ++enc=文字コード]

============================================================================
■カーソル移動[ノーマルモード]
1行目[gg]
x行目[xShift+g/xggGG]
最終行[Shift+g]
←[h]
↓[j]
↑[k]
→[l]

←↓↑→
h j k l

文字のある行頭[^]
行頭に移動[0]または[Home]
行末[$]または[End](完全に行末に移動するにはさらに[l]で一文字右に移動する必要がある)
次単語[w]/[Shift+Right]
前単語[b]/[Shift+Left]
ページ上移動[Ctrl+u]/[PgUp]
ページ下移動[Ctrl+d]/[PgDn]
画面最上行移動[Shift+h/H]
画面最上行移動[Shift+l/L]
ファイル最上位置に移動[gg]/[[[]
ファイル最下位置に移動[Shift+g/G]/[]]]

〇指定行に移動
[(行番号)G]またはコマンドモードで[:(行番号)]

〇カーソル移動(プログラム用)
[N][m : N個前のメソッドの先頭に移動(Java用)
[N][M : N個前のメソッドの末尾に移動(Java用)
[N]]m : N個先のメソッドの先頭に移動(Java用)
[N]]M : N個先のメソッドの末尾に移動(Java用)
[N][# : N個先の対応する #if や #ifdef や #else に移動(C言語用)
[N]]# : N個先の対応する #else や #endif に移動(C言語用)
[N][* : N個先の対応する /* */ コメントの先頭に移動(C言語用) ([/でも可)
[N]]* : N個先の対応する /* */ コメントの末尾に移動(C言語用) (]/でも可)

〇ページ移動
[N]Ctrl-f : Nページ分下にスクロール(Forward) (<PageDoen>, Shift-Downでも可)
[N]Ctrl-b : Nページ分上にスクロール(Back) (<PageUp>, Shift-Upでも可)

=============================================================================
■モードの基本
ノーマルモード[Esc]/[Ctrl+[]				カーソル移動/ヤンク(コピー)/貼り付け/削除(切り取り)
挿入モード[i/a]/[I/A]					文字入力/貼り付け/削除
置換(挿入)モード[Shift+r]/[INS][INS]
選択(ビジュアル)モード[v]				範囲選択/コピー/削除(切り取り)/整形など
矩形選択(ビジュアル)モード[(Windows)Crtl+q]/[Ctrl+v]	矩形範囲選択/コピー/削除/整形など
ノーマルモードからコマンドモード[:]			ファイルの保存[:w]/終了[:q]など
ノーマルモードから検索モード[/]					検索[/word]

============================================================================
■ノーマルモードからインサートモード
★行末に移動してインサートモード[A]
★行頭に移動してインサートモード[I]
★ホワイトスペースを無視して行頭に移動してインサートモード[gI]
カーソルの位置からインサートモード[i]/[INS]
カーソルの位置から1文字右に移動してインサートモード[a]
現在の行の下に改行してインサートモード[o]
現在の行を削除してインサートモード[cc]
文字を上書きする(置換モード)[Shift+r]

■インサートモード
文字を上書きする(置換モード)[INS]

■置換(インサート)モード
ノーマルモードのカーソルの位置から文字を上書きする[INS][INS]/[Shift+r]/[R]
インサートモードのカーソルの位置から文字を上書きする[INS]/[ESC][R]/[Ctrl+[][R]

■ノーマルモードからビジュアルモード
ノーマルモードから[v]

■ノーマルモードから行のビジュアルモード
カーソルがある行を選択してビジュアルモードで1行全選択[V]
※jkやカーソルキーで上下に移動して複数行選択できる

■ノーマルモードから矩形選択のビジュアルモード
(Windows Vim8.2-[Ctrl+q])/[/Ctrl+v]
※hjklやカーソルキーで範囲選択できる

■その他
ノーマルモードに戻る[Esc]/[Ctrl+[]

============================================================================
■コピー[y] yank(ヤンク)グイっと引っ張る/テキストを引っ張ってコピーする
ビジュアルモードで選択して[y]
一行コピー[yy]
全てコピーはコマンドモードで[:%y]

■切り取り(削除)[d]
※vimは範囲選択から切り取りの扱いが難しい所もあるのでその他の切り取り方法を駆使するのがお勧めです
〇ノーマルモードで
カーソル位置の文字を削除[x]
カーソル位置の手前の文字を削除[X]
一行切り取り[dd]
現在位置から行末まで切り取り[Shift+d]/[D]/[d$]
単語単位で切り取り[dw]
単語単位で連続して切り取り[dw...]	.でdwが繰り返される この場合はdwで切り取った後3回繰り返す
単語単位で3つ切り取り[d3w]
現在行から下に2行切り取り[d+Enter]
現在行から下に4行切り取り[d3+Enter]
カッコ等の内側を切り取り[di(]/[vi(d]	カッコは次のものが判定される[(){}[]""'']
カッコ等の内側を切り取り[da(]/[va(d]	カッコは次のものが判定される[(){}[]""'']
改行削除(スペースあり)[J]
改行削除(スペースなし)[gJ]
カッコ内削除[di?](?の候補は"",'',(),{},[],<>の対応する何れかの1つを入力)
カッコごと削除[da?](?の候補は"",'',(),{},[],<>の対応する何れかの1つを入力)
〇ビジュアルモードで
カーソル位置から1文字右を切り取りノーマルモードに戻る[d]/[x]/[DEL]
カーソル位置から右を切り取りノーマルモードに戻る[Shift+x]/[X]
※カーソル位置から1文字前だけ切り取るのは基本できない

■貼り付け[p] paste(ペースト)
ビジュアルモードまたはノーマルモードで[p]
※1文字右にずれる場合は[P]/[Shift+p]


■元に戻す[u]
ノーマルモードで[u/U]	※非常によく使います

============================================================================
■インデント
〇ノーマルモード
インデントするには[Nモードから>>][Iモードから[Ctrl+t]		>はShift+.
インデント解除するには[Nモードから<<][Iモードから[Ctrl+d]	<はShift+,
〇インサートモード
インデントを右に移動[Ctrl+t]または[Tab]
インデントを左に移動[Ctrl+d]
〇ビジュアルモード
複数行まとめてインデント[Vモードから範囲選択し>>]
複数行まとめてインデント解除[Vモードから範囲選択し<<]
〇ファイル全体をまとめて自動インデント
ノーマルモードで[gg=G]
※コメントのインデントは思った通りではないかも

============================================================================
■一括コメントアウト
矩形ビジュアルモード[Ctrl+v/(Windows)Ctrl+q]でコメントアウトしたい行を選択
[Shift+i]で挿入モードに入り//または#または'を入力し[ESC]を押す

コマンドモードで以下のコマンドを入力
[:[n],[n]s/^/\/\//]	C/C++,Java,JavaScriipt,C#,PHP,Goの場合([n]は行番号)(//コメント)
[:[n],[n]s/^/#/]	Python,Ruby,Perl,Shell,R,PowerShellなどの場合(#コメント)
[:[n],[n]s/^/'/]	VB系などの場合('コメント)
例[:10,15s/^/#/]

============================================================================
■カッコ選択[ノーマルモード]
カッコの内側選択[vi"]/[vi']/[vi(]/[/i)]/[vi{]/[vi}]/[vi[]/[vi]]

=============================================================================
■カレントディレクトリ
現在のディレクトリ[cd/pwd]

移動[:cd パス]

■現在開いているファイルのディレクトリをカレントディレクトリにする
グローバルなカレントディレクトリを変更する[:cd %:h]
ローカルなカレントディレクトリを変更する[:lcd %:h]

==========================================================================
■行番号[コマンドモード]
行番号表示[:set number/:set nu]
行番号表示取り消し[:set nonumber/:set nonu]
相対行表示[:set relativenumber]
相対行表示取り消し[:set norelativenumber]

============================================================================
■検索[コマンドモード]
[/検索文字] エンターで確定する
次の検索候補移動[n]
前の検索候補移動[b]/[Shift+b]/[B]/[Shift+n]/[N]
ハイライトを消す[:nohl/:noh/:nohlsearch]

■複数ファイル検索[コマンドモード]
カレントディレクトリ内のファイルから文字を検索する
[:vimgrep 検索文字 対象ファイル]
[:vim 検索文字 対象ファイル]vimはvimgrepの省略名
例:[:vim printf *.*]
例:[:vim printf **/*.*] 現在のディレクトリ以下を検索する

検索対象がある場合
[:cope]別窓が開きファイル一覧が表示される
[:cw]上に同じ
[:cn(ext)]次のファイルに移動
[:cp(rev)]前のファイルに移動
[:cfirst]最初のファイルに移動
[:clast]最後のファイルに移動

※grepの詳細なコマンドはLinuxのgrep基準なのでそちらを参照の事

============================================================================
■置換[コマンドモード]
1行内置換[:s/置換対象/置換文字/(g)]
※gオプションを付けない場合、各行の1番目の置換対象のみ置換文字に置き換わる
ファイル全体の置換[:%s/置換対象/置換文字/(g)(c)]
※gオプションを付けると全ての検索対象が置換対象になります gオプションが無い場合は対象行の最初の検索対象のみ置換対象になります
※cオプションを付けると確認しながら置換を行います 置換がOKなら[y]、NGなら[n]、全てなら[a]、途中終了するなら[q]

============================================================================
■文字補完[挿入モード]
Ctrl+p

============================================================================
■直前の操作を繰り返す[ノーマルモード]
.

============================================================================
■マクロ[ノーマルモード]
@
割愛するがcsvの中間カラムの整形とか楽になる

=============================================================================
■エクスプローラー
[:Explore パス]

============================================================================
■ターミナル起動
ターミナル起動[:terminal/:term] ※ウィンドウ分割で起動(終了するにはexitコマンド)
一時的にターミナルに切り替え[:shell/:sh] シェルを終了するにはexitでVimエディタに戻る

============================================================================
■ウィンドウ分割[コマンドモード]
ウィンドウを上下に分割[:sp(lit)][Ctrl+w+w]
ウィンドウを左右に分割[:vsp(lit)][Ctrl+w+s]

ウィンドウを順番に移動[Ctrl+w+w]
下のウィンドウに移動[Ctrl+wj]
上のウィンドウに移動[Ctrl+wk]
左のウィンドウに移動[Ctrl+wh]
右のウィンドウに移動[Ctrl+wl]

ウィンドウの縦のサイズを増やす[Ctrl+w++]
ウィンドウの縦のサイズを減らす[Ctrl+w+-]
ウィンドウの横のサイズを増やす[Ctrl+w+>]
ウィンドウの横のサイズを減らす[Ctrl+w+<]
ウィンドウの横のサイズを均等にする[Ctrl+w+=]

現在のウィンドウを閉じる[:q]
現在のウィンドウ以外を閉じる[:only]
全てのウィンドウを閉じる[:qa(ll)]
強制終了[:q!]
全てのウインドウを保存[:wa]
全てのウインドウを保存して終了[:wqa]

============================================================================
■タブを開く
ファイルをタブでvimを開く[-p]
例:vim -p file1.txt file2.txt
例2:vim -p ~/.vimrc

■新規タブを作成
新しくタブを開く[:tabnew]
新しくファイルをタブを開く[:tabe(dit) ファイルパス]

■タブ移動
次のタブに移動する[gt/:tabnext]
前のタブに移動する[gT/:tabprev]
直前のタブに移動する[g/Ctrl+Tab]
タブの順番を移動する[:tabm 数値]

■タブ一覧
タブ一覧を表示[:tabs]

■タブを閉じる
現在のタブを閉じる[:tabc(lose)]
現在のタブ以外の全てのタブを閉じる[:tabo(nly)]


============================================================================
■バッファ
バッファの一覧を表示[:ls/:buffers]
指定したバッファを削除[:bd(elete) 番号]
全てのバッファを削除[:%bd]
次のバッファに移動[:bn]

============================================================================
■お勧め設定[set/se]
ワイド記号文字正常表示[:set ambiwidth=double/:set ambiwidth=auto]
改行文字を$で表示[:set list/:set nolist]
行番号表示[:set number/:set nonumber]
相対行番号表示[:set relativenumber/:set norelativenumber]
制御文字表示[:set list]
カーソル行表示[:set cursorline]
カーソル列表示[:set cursorcolumn]
シンタックスハイライト[syntax on/off/enable]
カーソル位置を右下に表示[set ruler]
ビープ音を可視化(ビープ音が鳴らなくなりピカっと光る)[:set visualbell]
ソート(ビジュアルモードで選択範囲をソートする)[:set sort]

カラースキーム変更[:colorscheme [default/desert/elflord/evening/iindustry/morning/murphy/pablo/peachpuff/ron]]
お勧めカラースキーム[default/lunaperche/retrobox/zaibatsu]
特におすすめ[codedark](https://github.com/tomasiser/vim-code-dark)
カラースキームファイルは通常C:\Program Files\Vim\vim91\colors以下にあります

============================================================================
■設定の保存
~/.vimrcファイルに記録
vim ~/.vimrcでvimrcファイルを開き設定を書き込む このファイルはユーザーのホームディレクトリに作成される

============================================================================
■ほぼ必須のキーマップ
〇行を上下に移動
https://zenn.dev/vim_jp/articles/43d021f461f3a4#%E8%A1%8C%E3%82%92%E4%B8%8A%E4%B8%8B%E3%81%AB%E7%A7%BB%E5%8B%95
複数行選択時にも適用
~/.vimrcファイルに記録
nmap <expr> <C-k> $'<Cmd>move-1-{v:count1}<CR>=l'
nmap <expr> <C-j> $'<Cmd>move+{v:count1}<CR>=l'
xmap <silent><C-k> :move'<-2<CR>gv=gv
xmap <silent><C-j> :move'>+1<CR>gv=gv
下に移動[Ctrl+j]
上に移動[Ctrl+k]

〇挿入モードでカーソル移動
"挿入モード時に行末に移動する Ctrl+e
imap <C-e> <C-o>$
"挿入モード時に行頭に移動する Ctrl+a
imap <C-a> <C-o>^
"挿入モード時に上行に移動 Ctrl+j
imap <C-j> <C-o><UP>
"挿入モード時に下行に移動 Ctrl+k
imap <C-k> <C-o><DOWN>
"挿入モード時に一文字前に移動 Ctrl+h
imap <C-h> <Left>
"挿入モード時に一文字後ろに移動 Ctrl+l
imap <C-l> <Right>

"自動的に閉じ括弧を入力
imap { {}<LEFT>
imap [ []<LEFT>
imap ( ()<LEFT>
imap < <><LEFT>

============================================================================
■細かいテクニック
単語単位で大文字にする[NモードからgUiw]
単語単位で小文字にする[Nモードからguiw]

矩形選択範囲を大文字にする[VモードからU]
矩形選択範囲を子文字にする[Vモードからu]

〇行塊ごとにカーソル移動
行塊ごとに上にカーソル移動[Shift+[]
行塊ごとに下にカーソル移動[Shift+]]

〇ノーマルモードでまとめてインデントするには
複数行まとめて連続してインデント[Vモードから範囲選択し>>.(...)]
複数行まとめて連続してインデント解除[Vモードから範囲選択し<<.(...)]

〇ファイル全選択
[ggvG]

〇ペースト時にインデントがずれる場合
:set paste
:set nopaste

〇ペースト時に1文字ずれる場合
[p]ではなく[P]/[Shift+p]

〇挿入モードで上下行や前後文字に移動する
以下のキーマップを使う
imap <C-j> <C-o><DOWN>		"下行に移動[Ctrl+j]
imap <C-k> <C-o><UP>		"上行に移動[Ctrl+k]
imap <C-h> <Left>		"一文字前に移動[Ctrl+h]
imap <C-l> <Right>		"一文字後ろに移動[Ctrl+l]


============================================================================
■VSCodeでVimの設定[.vimrc]を使う方法
※.vimrcは通常cd $HOMEにある

〇vimrcのマッピング
https://github.com/VSCodeVim/Vim/?tab=readme-ov-file#vimrc-support
原文:.vimrc support is currently experimental. Only remaps are supported, and you may experience bugs. Please report them!
日本語訳:.vimrc support .vimrc のサポートは現在実験段階です。再マップのみがサポートされているため、バグが発生する可能性があります。それらを報告してください!

Set vim.vimrc.enable to true and set vim.vimrc.path appropriately.

〇具体的な操作方法
VSCodeで[Ctrl+,]で設定画面を出す

・vim.vimrc.enableの設定
検索画面でvim.vimrc.enableを入力
チェックを入れる

・vim.vimrc.pathの設定
検索画面でvim.vimrc.pathを入力
$HOME/.vimrcを入力

ctrl+shift+p で VSCode のアクションメニューを開き、「Vim:Edit .vimrc」を実施し、設定したパスの設定ファイルが開けば設定完了です