KEIS BLOGは株式会社ケイズ・ソフトウェアが運営しています。

KEIS BLOG

感動しちゃう!便利なViでのコマンド操作

どうもviつかってますか。viめっちゃ便利なんで、使ってほしいなと思ってます。 コンソール上での作業効率アップだけじゃなくて、日々の作業でも便利です。特に、効率的なコマンド操作を駆使することで、作業スピードと生産性が飛躍的に向上します。どういうエディターなのか、っていうのを解説してみました。

目次


基本操作

Viエディタを開くには、ターミナルで以下のコマンドを入力します。

vi filename.txt

Viには主に3つのモードがあります:ノーマルモード挿入モードコマンドラインモード。以下でそれぞれのモードについて説明します。

  • ノーマルモード: 起動時のデフォルトモード。コマンドを入力してテキストを操作します。
  • 挿入モード: テキストを直接編集できるモード。iキーで切り替えます。
  • コマンドラインモード: ファイルの保存や終了、検索などのコマンドを入力するモード。:キーで切り替えます。

移動コマンド

Viでは、キーボードのキー操作だけで効率的にカーソルを移動できます。以下に便利な移動コマンドを紹介します。

行単位の移動

特定の行に移動するためのコマンドです。

G    # ファイルの最終行に移動
gg   # ファイルの先頭行に移動
:number G  # 指定した行番号に移動(例:25Gで25行目に移動)

単語単位の移動

単語ごとにカーソルを移動させるコマンドです。

w   # 次の単語の先頭に移動
b   # 前の単語の先頭に移動
e   # 現在の単語の末尾に移動

画面単位の移動

画面の一部ずつカーソルを移動させるコマンドです。

Ctrl+f  # 1画面下にスクロール
Ctrl+b  # 1画面上にスクロール
Ctrl+d  # 半画面下にスクロール
Ctrl+u  # 半画面上にスクロール

編集コマンド

Viでは、ノーマルモードで様々な編集操作を効率的に行うことができます。以下に主要な編集コマンドを紹介します。

テキストの削除

特定のテキストを削除するためのコマンドです。

x    # 現在のカーソル位置の文字を削除
dd   # 現在の行を削除
dw   # 現在のカーソル位置から単語の終わりまでを削除
d$   # 現在のカーソル位置から行末までを削除

テキストのコピーと貼り付け

テキストをコピーして貼り付けるためのコマンドです。

yy   # 現在の行をコピー
yw   # 現在の単語をコピー
p    # コピーしたテキストをカーソルの後に貼り付け
P    # コピーしたテキストをカーソルの前に貼り付け

これがもう他の機能との組み合わせで化けるんで、覚えてください。yypyypyyp。そして、p連打です。

テキストの置換

特定のテキストを別のテキストに置換するコマンドです。 コロンコマンドって言ってますが、ホントはなんていうんだろ。 この辺からViの真髄ですね。

r    # 現在のカーソル位置の文字を置換(例:raでaに置換)
R    # 挿入モードで置換を開始
:s/old/new/g  # ファイル全体で「old」を「new」に置換

検索と置換

Viでは、強力な検索機能を使って効率的にテキストを探し出し、必要に応じて置換することができます。

テキストの検索

特定の文字列を検索するコマンドです。

/pattern  # 下方向に「pattern」を検索
?pattern  # 上方向に「pattern」を検索
n         # 次の検索結果に移動
N         # 前の検索結果に移動

テキストの置換

ファイル内の特定の文字列を別の文字列に置換するコマンドです。

:%s/old/new/g    # ファイル全体で「old」を「new」に置換
:10,20s/old/new/g # 10行目から20行目までで「old」を「new」に置換
:%s/\<old\>/new/g # 単語単位で「old」を「new」に置換

マクロとレジスタ

Viでは、複雑な一連の操作を自動化するためのマクロとレジスタを使用できます。これにより、繰り返し行う作業を効率化できます。

マクロの記録と再生

マクロを記録して、後で再生することで、同じ操作を複数回実行できます。

q{register}  # マクロの記録開始(例:qaでレジスタaに記録)
...          # 記録したい操作を実行
q            # マクロの記録終了
@{register}  # マクロの再生(例:@aでレジスタaのマクロを再生)
@@           # 最後に再生したマクロを再度再生

レジスタの使用

レジスタを使って、テキストのコピーや貼り付けを柔軟に管理できます。

"ayw  # 単語をレジスタaにコピー
"ap    # レジスタaの内容をカーソル位置に貼り付け
"bP    # レジスタbの内容をカーソル位置の前に貼り付け

カスタマイズ

Viは高いカスタマイズ性を誇り、ユーザーのニーズに応じて様々な設定を行うことができます。以下に代表的なカスタマイズ方法を紹介します。

.vimrcファイルの設定

.vimrcファイルを編集することで、Viエディタの動作や見た目を細かく調整できます。以下は基本的な設定例です。

syntax on             " シンタックスハイライトを有効にする
set number            " 行番号を表示する
set relativenumber    " 相対行番号を表示する
set tabstop=4         " タブ幅を4に設定
set shiftwidth=4      " 自動インデントの幅を4に設定
set expandtab         " タブをスペースに置換する
set autoindent        " 自動インデントを有効にする
set clipboard=unnamedplus " クリップボードと連携する

プラグインの導入

Vimには豊富なプラグインが存在し、機能を拡張することができます。例えば、ファイルブラウザのNERDTree、コード補完のYouCompleteMe、テーマのSolarizedなどがあります。プラグインマネージャーとしては、VundleやPathogen、vim-plugなどが一般的です。

" vim-plugの例
call plug#begin('~/.vim/plugged')

Plug 'preservim/nerdtree'
Plug 'Valloric/YouCompleteMe'
Plug 'altercation/vim-colors-solarized'

call plug#end()

カスタムキーマッピング

頻繁に使用するコマンドをカスタムキーマッピングで効率化します。以下は、保存と終了をショートカットキーに割り当てる例です。

nnoremap  :w      " Ctrl+sで保存
nnoremap  :q      " Ctrl+qで終了

まとめ

Viエディタは、プラグインガサガサ入れなくても、基本的なコマンド操作をマスターするだけで十分便利です。

テキスト編集の効率が飛躍的に向上します。気に入ったら少しプラグインも使って。

何十年も愛されてる理由がわかるところまではとりあえず使ってもらえると嬉しいです。


参考資料