8
7

More than 1 year has passed since last update.

Vim(Neovim)の基本操作

Last updated at Posted at 2023-04-18

今回は、私自身現在エンジニアとして働いていますが、Vim(Neovim)に関してはちょろっとコマンド知ってるくらいのほぼ初心者だったので、基本的なコマンドを備忘録としてまとめました。

VimとNeovimの違い(背景など)

  • Vimは昔から使われているが、古くから開発されているので、動作とかがちょっと遅くなってきているだとか、複雑になってきているというところがあるので、過去に改善を積み重ねてきたVimを作り直し、軽量化や拡張性を考慮した新たなVimとしてNeovimがつくられた。
  • Vimができることは、ほぼNeovimでできる
  • 使い方はほぼ一緒なので、Vimを習得してもNeovimを習得してもスキルレベルはほぼ一緒
  • 今後の世間の動向で切り替えれば良い
  • Neovimの方がよりプラグインが豊富
Vim Neovim
拡張しにくい 拡張しやすい
LSPサポート(他のプラグインに依存) LSPサポート(備わっている)

Neovimのエイリアス設定

以下の手順で設定ファイルにエイリアスを記述する(VimコマンドでNeovimが起動するようにする)

# ①編集するファイルを開く
$ open -a TextEdit ~/.zshrc 
または、
$ vim ~/.zshrc

# ②以下を追加▼(VimコマンドでNeovimが起動するようにエイリアス設定)

alias vi="nvim"
alias vim="nvim"
alias view="nvim -R"

# vimで編集した場合は、escキーでインサートモードから抜けたら :wq (保存して終了)を実行

# ③中身の確認
$ cat ~/.zshrc

# ④変更が反映されるよう保存
$ source ~/.zshrc

Vim(Neovim)の基本操作

移動系

vimコマンド 実行結果
k (Normal Mode) ↑に移動
j (Normal Mode) ↓に移動
h (Normal Mode) ←に移動
l (Normal Mode) →に移動

単語移動

vimコマンド 実行結果
w 単語の先頭に順移動
b 単語の先頭に逆移動
e 単語の末尾に順移動
ge 単語の末尾に逆移動

編集系

  • Viewモード
    • 何か間違えてファイルを書き換えたくないけども、Vimの機能を使って移動したいとか、そういった時に使う
vimコマンド 実行結果
i インサートモード
a 次の文字からインサートモード
o 選択行の下に空白を入れ、インサートモード (コメントを書く時などよく使う)
O 選択行に空白を入れ、インサートモード
esc Normal mode
:w ファイル名 名前をつけて保存
:w 上書き保存
:q 編集終了
:q! 保存しないで編集終了
:wq 保存して終了
view Viewモードで起動

削除系

vimコマンド 実行結果
vim /tmp/test/test.txt ファイル指定で開く
x(ノーマルモード) 1文字削除
dd(ノーマルモード) 1行削除(同時にコピーしてくれる)
dw(ノーマルモード) 単語の削除
cw(ノーマルモード) 単語の削除(実行後インサートモード)
2dd(ノーマルモード) 2行削除(指定した数だけ行を削除)
u(ノーマルモード) Undo(戻す)
Control + r(ノーマルモード) Undo redo(進める)

コピー・ペースト系

vimコマンド 実行結果
yy(ノーマルモード) 1行コピー
:%y 全行コピー
p(ノーマルモード) 下にペースト
P(ノーマルモード) 現在行にペースト👈よく使う!
. 直前に実行したコマンドを再度リピート
v(ビジュアルモード) 移動してからy(yank) カーソル指定コピー

検索・置換系

vimコマンド 実行結果
/{検索したい文字列} 例) /hoge 検索(検索結果の文字がハイライトで表示される)
:noh ハイライトを消す
:set hlsearch 再度ハイライトを表示
n 次の検索結果に移動
N 前の検索結果に移動
R 置換(あまり使わない)
:%s/{検索したい文字列}/{置き換えたい文字列}/g 一括置換
:%s/{検索したい文字列}/{置き換えたい文字列}/gc 1箇所ずつ確認しながら置換

その他の移動(ファイル内移動)

vimコマンド 実行結果
:set number 行番号を表示
:10 10行目に移動
$ 行末に移動
0 先頭に移動
^ インデントの先頭に移動
{ 段落毎に上に移動
} 段落毎に下に移動
[[ セクション毎に上に移動
]] セクション毎に下に移動
:1 もしくは gg ファイルの先頭に移動
G ファイルの最後に移動
Control + o 移動前に戻る

Vimのコマンドモードでスクリプトを実行

前提条件

vimで編集したPythonスクリプト(test.py)をvimのコマンドモードで実行したい時(Python3系をインストール済みとする)

  • vimのコマンドモードで実行する

    • 一連の流れとして以下を入れてやる
    • :!python3 test.py
  • 編集して再度実行を繰り返したい時

    • i(インサートモード)で編集
    • :wで変更内容を保存
    • :!!で前に実行したコマンドを参照して実行

参考資料

現役シリコンバレーエンジニアが教える NeoVim(VIM) + Tmux + Zsh 入門 - Udemy

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7