忍者ブログ

エンジニア初心者の備忘録

エンジニア初心者が躓いたことハマったことを公開します!

基礎知識篇:vim入門~プログラム超初心者のためのvim~

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

基礎知識篇:vim入門~プログラム超初心者のためのvim~

今回は、Unix 系のテキストエディタであるvimの入門知識をまとめます。

まず、vimとはなにか。

Vim(ヴィムまたはヴィアイエム)は、vi から派生し、発展した高機能なテキストエディタである。
『Vim - ウィキペディア』

次に、vimコマンドを整理する前に踏まえておくべき概念として「モード」があります。
vimには下記4つのモードがあります。

・ノーマルモード
・挿入モード
・コマンドモード
・ビジュアルモード


それでは、下記でvimのコマンドを整理します。


【コマンドモードでファイルを保存する】
:w
変更点を保存する
:q
終了
:q!
変更点を無視して強制的に終了


【コマンドモードで別のファイルを読み込む】
:e ファイル名
引数に渡したファイルを読み込む
hoge.phpファイルを読み込みたいときは、「:e hogehoge.php


【ノーマルモードでカーソルを移動させる】
gg
先頭へ移動
G
最後へ移動
Ctrl+f
画面単位の移動。一画面下へ
Ctrl+b
画面単位の移動。一画面上へ
w
単語単位の移動。次の単語へ
b
単語単位の移動。前の単語へ
^
キャレット。行頭へ移動
$
行末へ移動
f キャラクタ
引数に渡したキャラクタまで移動。
なお、「;」(セミコロン)を押していくと次のキャラクタへ移動していく
%
括弧(「{」等)の上で押すことにより対応する括弧(「}」等)へ移動


【ビジュアルモードでテキストを選択】
v
文字単位で選択
VShift+v
行単位で選択
Ctrl+v
矩形単位での選択
gg + VShift+v) + GShift+g
全選択
gg ← 先頭へ移動
V(Shift+v) ← 行単位で選択
G(Shift+g) ← 最後へ移動


【ノーマルモードでカット(削除)、コピー、貼付け】
x
1文字単位でカット(削除)
dd
1行単位でカット(削除)
行数 dd
複数行単位でカット(削除)
5行カットしたいときは、「5 dd
yy
yank。1行単位でコピー
行数 yy
複数行単位でコピー
5行コピーしたいときは、「5 yy
p
paste。貼付け


【ノーマルモードで検索】
/検索語
スラッシュ。複数行単位でコピー
hogeを検索したいときは、「/hoge
なお、同じ検索語を下方向に検索するには小文字の「n」、上方向に検索するには大文字の「N
*
カーソルがある位置の単語を下方向に検索
#
カーソルがある位置の単語を上方向に検索


【コマンドモードで置換】
:s/置換前文字/置換後文字/
substitute。1箇所単位で置換
hogeをHOGEにしたいときは、「:s/hoge/HOGE/
:s/置換前文字/置換後文字/g
substitute。カーソルがある位置の行単位で置換
hogeをHOGEにしたいときは、「:s/hoge/HOGE/g
:%s/置換前文字/置換後文字/g
substitute。ファイル全体での置換
hogeをHOGEにしたいときは、「:%s/hoge/HOGE/g
:%s/置換前文字/置換後文字/gc
substitute。confirm。確認しながらのファイル全体での置換
文字ごとに「これを変えますか?」と確認があるので、「y」(Yes)、「n」(No)、「a」(All)、「q」(ここでやめる)などをインタラクティブに選びながら置換していく
hogeをHOGEにしたいときは、「:%s/hoge/HOGE/gc


【ノーマルモードで操作の取り消し】
u
undo。直前の操作の取り消し
Ctrl+r
redo。直前の操作の取り消しの取り消し



【コマンドモードでウィンドウの分割】
:sp
split。上下にウィンドウを分割する
しかし、このままでは、上下とも同じファイルが開いているので、「Ctrl+w」でウィンドウ間を移動する
そして、変更したいファイルで「:e ファイル名」を使用して、新規のファイルを開く
:vs
virtical split。左右にウィンドウを分割する
しかし、このままでは、上下とも同じファイルが開いているので、「Ctrl+w」でウィンドウ間を移動する
そして、変更したいファイルで「:e ファイル名」を使用して、新規のファイルを開く
:close
分割したウィンドウを閉じる


【コマンドモードで複数のファイルをタブ形式で開く】
:tabnew
新規のタブを作る
:tabe
tab edit。新規のタブを作る
qt
go to next tab。ノーマルモードで利用する
タブ間を移動する
:tabclose
タブを閉じる
$ vim -p ファイル名 ファイル名 ・・・
タブを複数一括で開きたい場合は、Linuxコマンドの「vim」に「-p」オプションを付けて、その後に、開きたいファイルを列挙していく
:tabdo %s/置換前文字/置換後文字/g
複数タブでの一括置換
hogeをHOGEにしたいときは、「:tabdo %s/hoge/HOGE/g


【ノーマルモードで直前の操作の繰り返し】
.
ピリオド。直前の操作(コマンド)の繰り返し


【ノーマルモードでインデントを揃える】
=
イコール。コードのブロックを明確にするためのインデントを揃える
gg + VShift+v) + GShift+g)+=
ファイル全体のインデントを揃える。全選択してからインデントを揃える
gg ← 先頭へ移動
V(Shift+v) ← 行単位で選択
G(Shift+g) ← 最後へ移動
= ← インデントを揃える


【挿入モードで補完機能を利用】
Ctrl+ n
今開いているファイル(タブ形式で開いているタブも含む)で、使用している変数名や関数名について補完機能を利用する


【ノーマルモードから挿入モードで矩形選択後に編集する】
Ctrl+v + IShift+i) + 挿入したい文字+Esc
複数行の先頭に文字を追加する。矩形選択と編集を組み合わせる
Ctrl+v ← 矩形単位での選択
I(Shift+i) ← 挿入モードへ入る
挿入したい文字 ← 挿入したい文字
Esc ← ノーマルモードへ戻る

なお、これで追加した文字が不要で一括で削除したい場合は、「Ctrl+v + x」を利用する
【ノーマルモードでテキストオブジェクトを扱う】
まず、テキストオブジェクトとは何か?
簡単に言うと、文章の構造を見て、テキストをオブジェクトとして扱う機能です。
詳細は、下記です。

テキストオブジェクトとは、記号などで囲まれたテキストをオブジェクトとして扱うことができる、Vimの機能です。 テキストオブジェクトを使うと、ある記号で囲まれたテキストをコピーしたり削除したりできます。
『Vimのテキストオブジェクトとsurround.vimでhtml編集の効率を上げる』

テキストオブジェクトとは、特定の文字に囲まれた領域のことです。例えば、「() で囲まれた領域」や「”” で囲まれた領域」、「html のタグで囲まれた領域」をテキストオブジェクトといいます。
『Vim のすゝめ 第 8 回 – テキストオブジェクト — SOUM/misc』

そして、テキストオブジェクトの書式は下記の通りです。

オペレータコマンド + (回数指定) + 内部/外部指定 + テキストオブジェクトの種類の指定

オペレータコマンド
コピー(y: yank)、削除(d: delete)、変更(c: change)、選択(v: visual)といった操作の意味を決定づけるキーを使用します。

内部/外部指定
「i」(inner、中身)
「a」(all、全体)

テキストオブジェクトの種類の指定
タグ(t: tag)
括弧記号([,(,{,<,",`)


例えば、「<title>hoge</title>」ようにtitleタグで囲まれた領域にカーソルを置いて「cit」とコマンドを打つと、挿入モードに入れます。


【コマンドモードで使える便利な設定】
:set number
行番号を表示
:set nonumber
行番号を非表示
:syntax on
コードを色分け
:syntax off
コードの色分けを消す
:set tabstop=タブ数
タブの文字数を規定する
:set ignorecase
検索の際、大文字小文字を区別しない
:set noignorecase
検索の際、大文字小文字を区別する






【参考サイト】
『vim入門 (全18回) - プログラミングならドットインストール』
『Vim - ウィキペディア』
『Vimのテキストオブジェクトについてまとめた』
PR

コメント

プロフィール

HN:
プラムザ 太郎
性別:
非公開

P R