Vimに入門したので勉強したことまとめました

はじめに

学習したことのアウトプットとして書きました。 現在プログラミング学習中の実務未経験の者であり、技術的な内容などに誤りを含む可能性があるので不適切な記述などがありましたらコメントで教えていただけると幸いです


ファイル保存

コマンド  
a カーソルの場所から1文字進めてInsertModeに入る
i カーソルの場所からInsertModeに入る
ESC Normal Mode
view View Mode(上書き保存しようとするとWarningになる)

InsertModeとは テキストを入力する際のモードの一つ 参考 https://www.sophia-it.com/content/insert+mode

モード  
Normal コマンド入力
Insert 文字入力
Visual 文字選択
コマンド 意味
x カーソル直下の文字を消します
:w ファイル名 名前をつけて保存
:w ファイルの保存
:q 実行中のタブを閉じる
:wq 保存して閉じる
:q! 保存しないで閉じる
:w! !をつけて強制的に処理

編集・削除系の編集

コマンド 意味
x 1文字削除
dd 1行削除
5dd 5行削除
dw 単語の削除
u UNDO(操作を1つ戻す)
dw Undo Redo

Undo Redoって何なのか :fist_tone1:UNDOは「実行したことをなかったことにする」ものであり、 :fist_tone1:REDOは「一度実行したことをもう一度行う」もの。

https://qiita.com/fillips/items/d86b426d8222ad694809


コピー

コマンド 意味
yy 一行コピー
5yy 数字の行分だけコピー
p 現在行の下にペースト
P 現在行にペースト
. 直前のコマンドを繰り返す

コマンドモード

コマンド 意味
: or / Command Mode
!python http://test.py/ コマンドの実行
!! 前のコマンドを実行

移動

カーソルを

コマンド 意味
h 左に 👈
j 下に 👇
k 上に 👆
l 右に 👉

キーボードの並びが hjkl なので 左下上右と覚える

コマンド 意味
:set number 行番号を表示
:5 特定の行番号へ移動
5l 5文字分右へ
コマンド 意味
$ 行末に移動
0 先頭に移動
^ インデントの先頭に移動
{ 段落ごと上に移動
} 段落ごと下に移動
[[ セクションごと上に移動
]] セクションごと下に移動
:1 or gg ファイルの先頭に移動
ctrl + o 移動前に戻る
G(Shift + g) ファイルの最後に移動
H(Shift + h) 表示されている画面の一番上に行く
M (Shift + m) 表示されている画面の真ん中に行く
L (Shift + l) 表示されている画面の一番下に行く

検索

コマンド 意味
/{文字列} {文字列}を上から下へ検索
n 次の検索結果に移動
N(shift+n) 前の検索結果に移動
* 下側で単語を検索
# 上側で単語を検索

置換

コマンド 意味
R(shift+r) 置換
dw 単語を消す
:%s/search/replace/g 一括置換
:%s/search/replace/gc 確認しながら置換
コマンド 意味
J カーソルがある行に1つ下の行を連結する

|ページ内検索| | |/hoge|[/]のあとの文字列を検索する(Control-f的なあれ)| |n|[/]で検索した文字列の次の検索候補に飛ぶ| |N|[/]で検索した文字列の前の検索候補に飛ぶ|

シンタックス,ハイライト

コマンド 意味
:syntax off シンタックスをオフにする
:syntax on シンタックスをオンにする
:noh ハイライトを消す
:set nohlsearch ハイライトを設定しない
:set hlsearch ハイライトを設定する

Visualモードとインデント

コマンド 意味
o 選択行の下に空白を入れ、インサートモード
O(shift+o) 選択行に空白を入れ、インサートモード
J 行の連結
> 右にインデントを移動
< 左にインデントを移動
v(Visual Mode)で移動してy カーソル指定コピー

コメントアウト

コマンド 意味
ctrl + v Visual Block Mode
j or k 複数行を選択
:norm I{文字列} 先頭に挿入する場合
:norm A{文字列} 行末に追加する場合

プラグインについて

https://github.com/junegunn/vim-plug

NERDTree

ナードツリー。Vim上でフォルダ階層表示ができる。

https://github.com/preservim/nerdtree

参考 https://qiita.com/zwirky/items/0209579a635b4f9c95eehttps://reisuta.com/nerdtree/

FuzzyFinder

ファイル検索ができる。

https://github.com/junegunn/fzf

vim-fugitive

gitコマンドの操作ができる。

https://github.com/tpope/vim-fugitive

vim-gitgutter

Vim上でファイルの変更をプラス・マイナスの記号で表示してくれる。

https://github.com/airblade/vim-gitgutter

vim-commentary

gcと打つとコメントアウトができる。 各言語に応じて//や#など自動で対応。

https://github.com/tpope/vim-commentary

vim-polyglot

シンタックスをいい感じにする。 csvはカンマがみやすくなる。

https://github.com/sheerun/vim-polyglot

coc-nvm

コードの補完をしてくれる。

https://github.com/neoclide/coc.nvim

最後に

自転車乗るのと同じで普段から練習しないと身に付かないと思いました。

さらに詳しい記事、参考にした記事

https://dev.classmethod.jp/articles/vim-quickstart-with-vimtutor/

https://qiita.com/Hiyajo/items/9f87c5687652da42f275

https://vim-adventures.com/

https://qiita.com/colorrabbit/items/755cfbb0e97d48280775

https://www.udemy.com/course/vim-tmux-zsh/

https://reisuta.com/plugin-recommend/#プラグインの導入方法