はじめに
活用しきれていないvimの基本操作についてまとめます。
チートシートとして使用し、作業の効率化を図ることを目的としています。
vimとは
- Vim(Vi IMproved)は、テキストエディタの一種で、主にUnix系OSで使用される。
- VimはViエディタの互換性を保ちつつ、多くの機能や拡張性を追加したもの
- コマンドラインで起動でき、テキストファイルの編集やプログラミングコードの記述など、さまざまな用途に使用される。
- 通常はコマンドモード、挿入モード、ビジュアルモードの3つの主要なモードを持つ
- 非常にカスタマイズ性が高く、様々なプラグインや設定オプションを利用してエディタの機能を拡張することができる
- がっつり開発をするにはIDE(VSCodeやJetbrainsなど)が良いが、補助的にvimを使用することで効率化が図れる
3つのモード
- コマンドモード(Command mode): エディタの初期モードであり、コマンドを入力してファイルの保存や移動、削除などの編集操作を行う
- 挿入モード(Insert mode): テキストの挿入や編集を行うモードであり、キーボードの入力がそのままテキストとして挿入される。
- ビジュアルモード(Visual mode): テキストの選択や範囲指定を行うモードであり、コピー・切り取り・貼り付けなどの操作を行うことができる
vimの基本操作
環境
Windows 11 Home(wsl2)
Ubuntu 20.04 LTS
Cmnder
カーソル移動などの基本操作
コマンド |
動作 |
vim |
起動 |
i |
Insert Mode |
esc |
Normal Mode |
k |
↑に移動 |
j |
↓に移動 |
h |
←に移動 |
l |
→移動 |
:q! |
保存しないで編集終了 |
ファイルの保存
コマンド |
動作 |
:w ファイル名 |
名前を付けて保存 |
:w |
上書き保存 |
:q |
編集終了 |
:q! |
保存しないで編集終了 |
:wq |
保存して終了 |
i |
Insert mode |
a |
次の文字からInsert mode |
view |
Viewモードで起動 |
削除系の編集
コマンド |
動作 |
vim ./test.txt |
ファイル指定で開く |
i |
インサートモード |
a |
次の文字からInsert mode |
x |
1文字削除 |
dd |
1行削除(コピー可能) |
dw |
単語削除 |
2 dd |
2行削除 |
u |
Undo |
Ctrol + r |
Undo redo |
コピー&ペースト
コマンド |
動作 |
yy |
一行コピー |
p |
下にペースト |
P |
現在行にペースト |
2 yy |
2行コピー |
. |
操作をリピート |
コマンドモードで実行する
コマンド |
動作 |
: or / |
Command mode |
!python ./a.py(Command mode) |
コマンド実行 |
!! |
前のコマンドを実行 |
vimの移動
コマンド |
動作 |
:set number |
行番号を表示する |
:10 |
10行名に移動 |
$ |
行末に移動 |
0 |
先頭に移動 |
^ |
インデントの先頭に移動 |
{ |
段落ごとに上に移動 |
} |
段落ごとに下に移動 |
[[ |
セクションごとに上に移動 |
]] |
セクションごとに下に移動 |
:1 or gg |
ファイルの先頭に移動 |
G |
ファイルの最後に移動 |
ctrl + o |
移動前に戻る |
検索と置換
コマンド |
動作 |
/{pattern} ex) /test |
検索(例はtestを検索している) |
n |
次の検索結果に移動 |
N |
前の検索結果に移動 |
R |
置換 |
dw |
Rよりも単語削除をよく使うケースが多い |
:%s/search/replace/g |
一括置換 |
:%s/search/replace/gc |
確認しながら置換 |
Visualモードやインデント
コマンド |
動作 |
o |
選択行の下に空白を入れ、インサートモード |
O |
選択行に空白を入れ、インサートモード |
J |
行の連結 |
> |
右にインデントを移動 |
< |
左にインデントを移動 |
v (visual mode) 移動してからy |
カーソル指定コピー |
vimのコンフィグ設定
- vimの挙動を自動的に設定することが可能
- 下記のように、設定ファイルに適宜設定を記載する
// Neovimの場合は、vim ~/.config/nvim/init.vim
vim ~/.config/nvim/init.vim
configファイルに記載する設定 |
説明 |
set shell=/bin/zsh |
コマンドの際にはzshを使う |
set shiftwidth=4 |
indentの幅 |
set tabstop=4 |
タブに変換されるサイズ |
set expandtab |
タブの入力の際にスペース |
set textwidth=0 |
ワードラッピングなし |
set autoindent |
自動インデント※set pasteで解除可能 |
set hisearch |
Searchのハイライト |
set clipboard=unnamed |
クリップボードへの登録 |
synatax on |
SuntaxをEnable |
参考文献
現役シリコンバレーエンジニアが教える NeoVim(VIM) + Tmux + Zsh 入門