Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vim -基本-

$
0
0

前提

  • OSはOS X El Capitanを使用
  • Vimは7.3を使用
  • 必要な知識としてはUNIXコマンドを用いたディレクトリ移動
  • 対象者は「Vimを初めて触る人」

はじめに

バージョン確認

下記コマンドをターミナルから実行することで現在のVimのバージョンを確認することができます。

$ vim --version

チュートリアル

下記コマンドをターミナルから実行することでチュートリアルを閲覧することができます。また、:q[ENTER]で元に戻れます。

$ vimtutor

ファイルを開く

下記コマンドをターミナルから実行することで既にあるファイルをVimエディタで編集することができます(Finderからファイルを開くときのようなイメージ)。まだないファイル名を記述すると、新しいファイルを作成しつつVimエディタが立ち上がります(Finderで新しいファイルを作成するときのようなイメージ)。

$ vim <path>/<file>

モードについて

Vimにはモードという概念があります。一般的なテキストエディタ(AtomやSublime Textなど)にはない概念なので、最初はとっつきにくいかもしれません。しかし、使っているうちに慣れていきます。ここでは簡単な概要説明に留めて、詳しい使い方や機能は後述します。具体的には、以下の4つのモードがあります。

  • ノーマルモード
    • 開いたばかりのとき
  • コマンドモード
    • ノーマルモードで:を押下したとき(下の方に:と表示)
  • 入力モード
    • ノーマルモードでiを押下したとき(下の方に--INSERT--と表示)
  • ビジュアルモード
    • ノーマルモードでvを押下したとき(下の方に--VISUAL--と表示)

ちなみにノーマルモード以外のモードからノーマルモードに戻るには[ESC]を押下します。わからなくなったらとにかく[ESC]を押せばOKです。

ファイル操作

ファイルの編集

まずはファイルを編集して保存してみましょう。下記コマンドで適当なファイルをVimで開いてみましょう。

$ vim <path>/<file>

そしてiを押して入力モードに入りましょう。こうすることで一般的なテキストエディタのように文字を入力することができます。適当な文字を入力したら、次に[ESC]でノーマルモードに戻りましょう。

ファイルの保存

:wでファイルを上書き保存することができます。
また、:w <file>でという名前で保存することができます。
おそらくwはwriteの略だと思います。

終了の方法

:qで終了することができます。
ただし、変更点があって上書き保存をせずに:qを実行することはできません。
:wで保存してから終了するか、:q!で変更点を保存せずに終了しましょう。
また、:wqで上書き保存しつつ終了できます。
おそらくqはquitの略だと思います。

そしてよくある操作として、あるファイルを編集したあと別のファイルを開きたいときがよくあると思います。もちろん、その都度:wqを使ってvim <path>/<file>で開いてもいいのですが他の方法もあります。
それは、:e <path>/<another_file>です。これでVimを一度終了させずに別のファイル<another_file>を開くことができます。

ノーマルモード

文字単位の移動

普通の矢印キーでも移動できますが以下のコマンドでも移動することができます。
- hで左に一文字移動
- jで下に一文字移動
- kで上に一文字移動
- lで右に一文字移動
個人的にjkが曲者だと思うのですがjが下矢印に似ているという良い意味でのこじつけをどこかで耳にして以来混乱することがなくなりました。

単語単位の移動

  • wで一文字前の単語に移動
  • bで一文字後ろの単語に移動
  • ^で行頭に移動
  • $で行末に移動
  • f+<character>で<character>まで移動(この状態で;を押すと次の<character>に移動)
    • ex.faで「a」まで移動

おそらくwはword、bback word、fはfindの略だと思います。

行単位の移動

  • ggで1行目に移動
  • Gで最終行に移動
  • <number>Gで<number>行目に移動
    • ex.123Gで123行目に移動

ページ単位の移動

  • [CTRL]+bで一画面上に移動
  • [CTRL]+fで一画面下に移動 おそらくbはback、fはforwardの略だと思います。

その他の移動

  • 任意の括弧の上で%で対応する括弧に移動

検索

  • /<word>で<word>を検索
    • 下方向への検索はn
    • 上方向への検索はN
  • 任意の単語にカーソルが乗っている状態で*でカーソルが乗っている単語を上方向に検索
  • 任意の単語にカーソルが乗っている状態で#でカーソルが乗っている単語を下方向に検索

操作の取り消し

  • uでundo(取り消し)
  • [CTRL]+rでredo(undoの取り消し)

コマンドの繰り返し

  • .で直前のコマンドを繰り返す

カット、コピー、貼り付け

  • xでカーソル上の文字をカット
  • ddでカーソル上の行をカット
  • pでカーソル上の行下にペースト
  • Pでカーソル上の行上にペースト
  • yyでカーソル上の行をコピー

ここで便利なテクニックとしては<number><command>というものがあります。これは<command>を<number>回繰り返すという意味です。たとえば12ddとすれば12行カット(削除)することができます。xpなども同様です。
また、削除コマンドが見当たらないと思いますが、クリップボードに保持するかどうかを無視すれば「カット」も「削除」と同様といえるので問題ないという風に考えられると思います。

入力モード

補完機能

  • [CTRL]+nで補完機能

たとえば$helloWorldという変数があったとき$helあたりで[CTRL]+nを押下すれば$helloWorldが出てきます。

コマンドモード

置換

  • :s/<old_word>/<new_word>/で<old_word>を<new_word>で1つ置換
  • :s/<old_word>/<new_word>/gで<old_word>を<new_word>で置換(範囲は選択行のみ)
  • :s%/<old_word>/<new_word>/gで<old_word>を<new_word>で置換(範囲はファイル全体)
    • :s%/<old_word>/<new_word>/gcで一つ一つ置換するかどうかを確認しつつ置換できる
      • yで置換する
      • nで置換しない
      • aで全て置換(All)
      • qで置換をやめる(Quit)
  • :tabdo s%/<old_word>/<new_word>/gで<old_word>を<new_word>で置換(範囲はタブで開いているファイル全体)

※タブに関しては後述

ウィンドウ分割

  • :spで上下に分割(split)
  • :vsで左右に分割(vertical split)
  • [CTRL]+w+wでウィンドウ移動
  • :closeでウィンドウを一つ閉じる

ウィンドウ分割したときは同じファイルが複数開かれている状態になるので任意のウィンドウで:e <path>/<file>で別ファイルを開いて編集しましょう。もちろん、片方のウィンドウでコピーしたものをもう片方のウィンドウにペーストなども可能です。

タブ

  • :tabnewで新しいタブを開く
  • :tabe <path>/<file>でfileを開きつつタブを開く
  • gtでタブ間を移動(ノーマルモード)
  • :tabcloseでタブを閉じる

また、ターミナルにいる状態でvim -p <file_1> <file_2> <file_3>とすれば一気に<file_1><file_2><file_3>をタブで開くことが可能です。

Vimの設定

  • :set numberで行番号を表示
  • :set nonumberで行番号を非表示
  • :syntax onでコードを色分けする
  • :syntax offでコードを色分けしない
  • :set tabstop=<number>でタブの文字数を<number>にする(デフォルトでは8個)
  • :set ignorecaseで検索の際に大文字小文字を区別しないで検索
  • :set noignorecaseで検索の際に大文字小文字を区別して検索(デフォルト)

ビジュアルモード

ビジュアルモードの種類

  • vを押下したときに入れるビジュアルモード(下の方に--VISUAL--と表示)
  • Vを押下したときに入れるビジュアルラインモード(下の方に--VISUAL LINE--と表示)
  • [CTRL]+Vを押下したときに入れるビジュアルブロックモード(下の方に--VISUAL BLOCK--と表示)

ビジュアルモードでは文字単位で選択することができます。
ビジュアルラインモードでは行単位で選択することができます。
ビジュアルブロックモードでは矩形選択をすることができます。

インデントを揃える

  • 範囲を選択して=でインデントを揃える
  • 範囲を選択して<で左方向にインデントを揃える
  • 範囲を選択して>で左方向にインデントを揃える

おそらく<は左矢印、>は右矢印を示していると思います。

矩形選択後の編集

  • [CTRL]+v+選択+I+入力+[ESC]で矩形選択後の編集

たとえば、複数行の先頭にsampleを付けることなどができます。

テキストオブジェクト

  • <c>OR<d>OR<y> + <i>OR<a> + <t>OR<}>OR<]>OR<)>OR<">OR<'>OR...etc
    • <c>はchange+insert
    • <d>はdelete
    • <y>はyank(copy)
    • <i>はinner
    • <a>はall
    • <t>はタグ

意味不明だと思うので例を出します。たとえば、<p>Hello World</p>に対してcitを実行するとHello Worldが削除されてpタグの中で入力モードに入ります。また、同じ条件でdatを実行すると<p>Hello World</p>を全て削除します。

さいごに

基本的な知識としてはこの辺かと。他にもテーマをmonokaiっぽくしたり設定ファイルを作成したりできるのですが、そのあたりはまた別でまとめます。まだまだVim初心者ですがVimmerになるべく頑張ります。


Viewing all articles
Browse latest Browse all 5608

Trending Articles