Closed11
vim操作(カスタマイズなし)
はじめに
オレオレキーマッピング色をなくしたいので、素のvimマッピングを学ぶ
移動系
:行番号
行番号gg
行番号G
- 指定した行に移動
- 10行目に移動するなら、
:10
or10gg
or10G
削除系
-
x
- 現在のカーソルの直下を削除
-
X
- 現在のカーソルの左を削除
-
d {オペレーション}
- オペレーションでに応じた要素を削除
-
dl
- 現在のカーソルの右を削除
-
dh
- 現在のカーソルの左を削除
-
dj
- 現在のカーソルの行と直下の行を削除
-
dh
- 現在のカーソルの行と直上の行を削除
-
d$
- 現在のカーソルからその行の末尾までを削除
-
d^
- 現在のカーソルからその行の最初の文字までを削除
-
dd
- その行を削除
-
行数dd
- 指定した行数分削除
- 現在の行とその下(指定した行数-1)行
3dd
- 指定した行数分削除
-
dw
- カーソル直下の単語を削除
-
3dw
- 3単語削除
-
- オペレーションでに応じた要素を削除
挿入/置換系
-
i
- 現在のカーソルの左にinsertモードで突入
-
数字
i- 突入したinsertモード内で入力した文字をinsertモードEscape時に
数字
回挿入する5i
- 突入したinsertモード内で入力した文字をinsertモードEscape時に
-
- 現在のカーソルの左にinsertモードで突入
-
I
- 現在のカーソルの行の行頭にinsertモードで突入
-
a
- 現在のカーソルの右にinsertモードで突入(append)
-
A
- 現在のカーソルの行の行末にinsertモードで突入
-
o
- 現在のカーソルの行の直下に空行作ってinsertモードで突入
-
-
数字
o- 突入したinsertモード内で入力した文字から始まる行をinsertモードEscape時に
数字
回挿入する5o
- 突入したinsertモード内で入力した文字から始まる行をinsertモードEscape時に
-
-
- 現在のカーソルの行の直下に空行作ってinsertモードで突入
-
O
- 現在のカーソルの行の直上に空行作ってinsertモードで突入
-
r
- Replaceモードに突入
- カーソル直下の1文字だけ置き換えが可能
-
R
- Replaceモードに突入
- 複数文字の置き換えが可能
-
cw
- 置き換えたいwordの最初にカーソルを置いてcwを押すと単語を削除しつつinsertモードに突入する
-
c$
- カーソルから文末までを削除しつつinsertモードに突入
-
~
- カーソルの位置の文字の大文字と小文字を逆転させる
-
g~w
- カーソルの位置の単語の大文字と小文字を逆転させる
-
g~$
- カーソルの位置から行末までを大文字と小文字逆転させる
-
gUU
- カーソルの行を丸ごと大文字にする
-
guu
-
- カーソルの行を丸ごと小文字にする
-
-
J
- カーソルの行と下の行を結合する。連結部に空白あり。
-
gJ
- カーソルの行と下の行を結合する。連結部に空白なし。
ESC
Ctrl + C
がぱっと見同じ挙動に見えたから、押しやすいしこれでいいじゃんと思ってたら別物だった。
数字i
での離脱時に、Ctrl + C
だと反映されず、ESC
だと反映される。
Ctrl + [
でもOK(ESCと同じ)
- こっちの方が指離さなくて良いからESCキーより良い
検索 / 置換系
1文字の検索
-
f検索したい文字
- その行にある「検索したい文字」にカーソルを移動する。行の左から右に、最初にhitしたものに飛ぶ。
-
;
を押すと次にhitしたものに飛ぶ,
を押すと戻る
-
- その行にある「検索したい文字」にカーソルを移動する。行の左から右に、最初にhitしたものに飛ぶ。
-
F検索したい文字
- その行にある「検索したい文字」にカーソルを移動する。行の右から左に最初にhitしたものに飛ぶ。
-
;
を押すと次にhitしたものに飛ぶ,
を押すと戻る
-
- その行にある「検索したい文字」にカーソルを移動する。行の右から左に最初にhitしたものに飛ぶ。
-
t検索したい文字
- その行にある「検索したい文字」の直前にカーソルを移動する。行の左から右に、最初にhitしたものの直前に飛ぶ。
-
;
を押すと次にhitしたものに飛ぶ,
を押すと戻る
-
- その行にある「検索したい文字」の直前にカーソルを移動する。行の左から右に、最初にhitしたものの直前に飛ぶ。
-
T検索したい文字
- その行にある「検索したい文字」の直前にカーソルを移動する。行の右から左に、最初にhitしたものの直前に飛ぶ。
-
;
を押すと次にhitしたものに飛ぶ,
を押すと戻る
-
- その行にある「検索したい文字」の直前にカーソルを移動する。行の右から左に、最初にhitしたものの直前に飛ぶ。
これらは他のコマンドと組み合わせが可能
-
dt検索したい文字
- 現在のカーソルから検索したい文字の直前までを削除
複数文字列の検索
-
/検索したい文字列
-
n
- ヒットした次の対象へ
-
N
- ヒットした前の対象へ
-
-
インクリメンタルサーチの設定
-
:set is?
- 現在の設定の確認
-
:set is
- インクリメンタルサーチON
-
:set nois
- インクリメンタルサーチOFF
-
-
検索でhitしたものを1つずつ同じ文字で置換するには
-
/
で検索 -
cw
とかで置換してエスケープ -
n
で次のワードにとんで、.
を押す(2を繰り返し実行する)
-
-
*
- カーソルの単語を、順方向に検索
-
#
- カーソルの単語を、逆方向に検索
複数置換
-
:s/old/new/g
- そのカーソルがある行のすべてのoldをnewに置換する
-
:範囲s/old/new/g
- 範囲内のすべてのoldをnewに置換する
- ファイル内のすべての行を対象にする場合
:%s/old/new/g
その他
-
.
- 直前のコマンドを繰り返す
-
行番号,行番号
- 範囲指定で使える
Text object
テキストオブジェクトを使うことで、例えば単語のコピーのときとかにわざわざ文頭に移動してwでなんとかするみたいなことをしなくても済むようになる。
{operator}{a}{object}
{operator}{i}{object}
daw = Delete a word (テキストオブジェクト全体を指定(a))
ciw = change inner word テキストオブジェクト内部を指定(inner)
種類
- aw
- a word 囲みあり
- iw
- inner word 囲みなし
- as
- a sentence 囲みあり
- is
- inner sentence 囲みなし
- ap
- a paragraph 囲みあり
- ip
- inner paragraph 囲みなし
{とか(とか<とかtとかもobjectとして使える
- a{
- a { {も含め{の中身
- i{
- inner { {の中身
※ t はタグ( HTMLタグみたいな)
- inner { {の中身
参考)
マクロ
レジスタに複数のキー操作の流れを記録/再生できる仕組み
vimrcに保存することもできる
マクロの登録
qレジスタ名
で登録開始
- 例)
qa
- aレジスタに登録する場合
q
で登録終了
- aレジスタに登録する場合
マクロの実行
@レジスタ名
- 例)@a
- aレジスタに入ってるマクロを実行
数字@レジスタ名
で繰り返すことも可能
@@
で直前のマクロを繰り返せる
Visual モード
-
v
- 文字レベルビジュアルモード
- 選択後、選択したまま選択範囲の一番反対側に戻る場合、
o
- ``V`
- 行レベルビジュアルモード
-
Ctrl + v
- ブロックレベルビジュアルモード
- 選択後、選択したまま選択範囲の縦方向の一番反対側に戻る場合、
o
- 選択後、選択したまま選択範囲の横方向の一番反対側に戻る場合、
O
複数行に同じ文字を挿入したい場合
-
Ctrl + v
でブロックビジュアルモードに入る -
I
かA
でインサートモードに入る- 大文字であることに注意
- 入力してエスケープすると、ブロックビジュアルモードで選択した範囲全てに適用される
折りたたみ
zo
- 折りたたみを展開
zc
- 折りたたみを閉じる
このスクラップは2024/06/17にクローズされました