Qiitaを始めてずっとROM専。
「自分から何か発信してみたい」と「何か勉強しよう」と漠然と思い、
再燃してきたVimについて書いていこうと思う。
(既に多くの方がVim関連の投稿をされててびびりながら)
これからVimを学びたい方やサーバでの作業時などに役立てれば嬉しい。
準備
何はともあれVimを使えるようにインストールしなければ。
偉大な先人達が作ってくれたVimを頂く。ありがたい。
色々あるようだが以下をインストールする。
windowsはこちらからVim — KaoriYa
MacはこちらからMacVim
(Macユーザの方ならターミナルのviで十分でしたらインストール不要ですね。)
01/11 基本操作
まず何か書こうとすると何か書けない。それどころかカーソル移動すら違和感。
という初めてのVim(Linuxサーバ上でのView/Vi君でした)を思い出しつつ改めて勉強しよう。
-
hjklでそれぞれ左下上右にカーソル移動。 - 入力したいときはまずは
iを押してから入力する。 - 入力が終わったら
escキーを押す。 - 一時保存するときは
escキーを押して:w。保存して閉じる時は:wq。 - 保存せずに閉じるときは
escキーを押して:q!
多分これで書きたいことは書けるし保存できる。
まったくVimのいいとこ無しの時代。
hjklで左下上右に移動できるけど正直矢印キー使っちゃう。
使えなければ仕方なくhjkl使う感じ。
02/11 編集機能
-
xを押すとカーソル直下の文字を1文字削除。 -
rを押してから任意の文字を打つとカーソル直下の文字を置換できる。
どちらもいちいちiとか押さなくていいので編集するとき便利。
- 間違えたらesc押して
uを押すと元に戻す。Undo。「Ctrl + z」的な。まじお世話になるキー。 -
Ctrl + rを押すと取り消しを取り消してくれる。やり直し。Redo。「Ctrl + y」的な。時々お世話に。 -
:set nuで行番号が表示される。見やすくなるので開いたら即打つ。
03/11 4モードとコピペと検索
Vimには4つのモードがある。まずモードを覚えるといいらしい。
| モード名 | 切替えるには | 思ったこと |
|---|---|---|
| ノーマルモード | esc |
hjklで移動するモード。入力できない感じのやつ。 |
| インサートモード |
iやoなど |
入力できる感じの。 |
| コマンドラインモード |
: を押してから各種コマンド入力 |
やってると玄人っぽい。 |
| ビジュアルモード | v |
「Shiftキー押しっぱなしモード」だとイメージし易い。 |
| 上の「切替えるには」で各モードを切り替える。 | ||
| とりあえずこういうもんだと思い、ばしばしモードを切り替える練習をする。 | ||
| 実際にはノーマルモードを起点として他のモードに移行する。 | ||
そのためビジュアルモード時にiとか押してもインサートモードにならない。 |
||
ビジュアルモード→escキーでノーマルモード→iでインサートモードなどのように操作する。 |
- yyが行コピー(ヤンクと言うらしい)
- pがペースト
-
/を押して検索したいキーワードを入力しEnter。以降はnで次を検索。F3的な。Nで前を検索。Shift + F3的な。 -
*を押すとカーソル位置の単語でハイライト(まじ便利!)かつ検索した扱いなのでnとかNが効く。ハイライトが邪魔になったら:noh(no highlight)で消せる。
やっぱりエディターなんだからコピペと検索を覚えねば。
04/11 移動操作
-
Ctrl + fページダウン。front(前へ)と覚える。 -
Ctrl + bページアップ。back(後ろへ)と覚える。 -
0行頭へ移動。ホームキー的な動き。 -
$行末へ移動。エンドキー的な動き。 -
w次の単語へ移動。lより移動範囲が広くいい。 -
b前の単語へ移動。hより移動範囲が広くいい。 -
ggファイルの頭へ移動。Shift + home的な動き。 -
Gファイルの末尾へ移動。Shift +end的な動き。(実際には指定行に移動と後に覚える)
私のVim(vi/view)用途のメインはアプリサーバのログ確認なので
入力よりも移動・検索が役に立つことが多かった。
(でもこの投稿は右のリンク Vim — KaoriYa で頂いたwindowsソフトで勉強してるけど)
また以下のコマンド地味にいい
-
:set cursorline現在カーソル行を色づけ表示してくれる。どこにいるか一目で分かる。 -
:set rulerカーソルが何行目の何列目に置かれているかを表示 -
:set hlsearch検索文字をハイライト -
:syntax onシンタックスハイライト(コードの色付け)をしてくれる。
これも:set nu同様、ファイルを開いたら即入力しよう。
ただ、環境によって設定語がない場合もあるので注意。
05/11 ビジュアルモードと数値操作
ビジュアルモードについて
-
vキーを押すとShiftキー押しっぱなしモード -
Vキーを押すと行選択しっぱなしモード -
Ctrl + Vキーを押すと矩形選択モード - ビジュアルモードで選択して
U:選択範囲を大文字変換 - ビジュアルモードで選択して
u:選択範囲を小文字変換 - ビジュアルモードで選択して
*:次に現れるカーソル配下の文字まで選択する
私のビジュアルモード使い方は基本的に範囲選択してyでコピー、pでペースト。
もしくは矩形選択してi押してから入力、esc押してビジュアルモードを抜けての矩形挿入ぐらい。
また、ノーマルモードでおもしろいと思った操作が以下の2つ。
- 数字の上でctrl-a:インクリメント
- 数字の上でctrl-x:デクリメント
インク/デクリがあるエディタなんて初めて。
でも日付挿入のエディターとかあるからそんなに驚くことない機能?
06/11 ノーマルモードのオペレーション
- 数字キーとの組み合わせオペレーション
組み合わせというか例えば3文字削除したいとき
xxxと3回xキーを押していた。(なんてコスト!!)
3xで同じ結果を得られる。
これは色々な操作にも使えるので大変お世話になる機能。
5yyで5行コピー
10ddで10行削除
dwで1単語を削除。
ちなみに指定行(例で10行目)に移動(ジャンプ)は10Gで移動できる。
指定しないGでファイル末尾にジャンプする。
07/11 置換
-
:%s/置換したい文字列/置換後の文字列/g開いているファイル全体を置換する。
例):%s/hoge//g 文字列hogeをブランクに置換(削除)する。
-
:置換開始行数,置換終了行数s/置換したい文字列/置換後の文字列/g指定した行の間を置換する。 -
置換したい文字の任意文字を置換後の文字列内に登場させたい場合、正規表現のグループ化が便利。 - ただこのグループ化で必要な
()は\でエスケープが必要 =>\(\)と書く。この()の間に登場させたい文字を書く。- 例)
hogeをグループ化するには\(hoge\)とする。
- 例)
- さらにキャプチャする際には
\1,\2とバックスラッシュ+出現位置のインデックス(数字)とする。
例):3,10s/hoge/ほげ/g 3〜10行目の「hoge」を「ほげ」にする。
例):3,10s/^/#/g 3〜10行目の文頭をコメント埋めする。
例):3,10s/\(hoge\)fuga/\1bar/g 3〜10行目の hogefuga を hogebar にする。
08/11 操作を記録
どちらもノーマルモードでの機能。
-
.キーを押すと直前の操作を繰り返す。ExcelのF4キーのような動作。
例)ddで1行削除した後、次の行も.で削除。
-
q押した後に英数字(※1)を押す。iを押して文字を入力したり削除したり。escキーを押してqで操作記録完了。その後はノーマルモードで@{※1}のキーを押すと同じ操作を実行。つまりsakuraエディターや秀丸エディターなどにあるキーマクロ。
09/11 コマンド結果挿入
「ここにpwd結果のカレントディレクトリを書けたらな」
「日付を入力出来たらな」
できます!
ノーマルモードで以下を実行。
-
:!の後にコマンドを入力しEnter押下で外部コマンドを実行 -
:r!の後にコマンドを入力しEnter押下で外部コマンドを実行しつつエディタに実行結果を反映
例):! pwdで現在ディレクトリを確認
例):r! pwdで現在ディレクトリをカーソル下部に挿入する
例):r! date +"%Y/%m/%d"で本日日付を2017/03/13のように「yyyy/mm/dd」形式でカーソル下部に挿入する
外部シェル実行した結果もいけると思いつつ未検証。。。近日更新予定。
10/11 ファイルの再読み込みとソート
もはや私の中でも「それ以外」的な扱いですが
ログファイルなどを見ていてリロードしたい場合にやります。
ファイルの再読み込み
:e!
ソート(要:範囲選択)
-
:sort昇順ソート -
:sort!降順ソート
11/11 補完
IDEのような補完ができないからな・・・
できます!
インサートモードで以下実施。
-
Ctrl + x Ctrl + fファイルを一覧から選ぶ。くそかっこいい。 -
Ctrl + x Ctrl + n開いているファイルの単語を選択できる。単語入力途中にやるとくそかっこいい。
(Ctrl + xの後にCtrl + 「],D,E,F,I,K,L,N,O,Ps,U,V,Y」と、色々ある。)
所感
- 書き出した操作を1つずつ手になじむまで使ってみる。何も見なくても自然に書けるようになったら次に進もう。
- ちょっとずつ編集して(後から追記できるよね??)勉強していこう。
-
書いていて他の方の投稿のリンクを貼りたい・・・やっぱ貼ろう!
でも小心者なのでびくびくして貼れない。
やっぱいきなりじゃ迷惑か?とか考えちゃう。 - 後は
.vimrcの設定等を記載しよう。いつか。。。 - pluginを入れるとより便利かと思いつつ、メインエディタにはしてないので気が進まない。
参考
投稿に辺り非常に参考にした投稿をご紹介。
hachi8833さんの Vim幼稚園からVim小学校へ
名無しのVim使い 矩形ビジュアルモードを利用した編集を使いこなす
何もないから何かみつかる ネットの基礎知識&Windows/Linuxの快適術