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の快適術