MENU閉じる

HEXA BLOG

アプリ紹介

HEXA BLOGその他アプリ紹介2015.6.29

Vimの感覚

昨日、マッドマックスを観てきました。

 

冒頭の20分くらいでの世界観や目的の描き方であったり、その後のメリハリがありながらも  わかりやすく しっかりとテンションを上げていくアクションに 「すばらしいな」と、コメンタリーやメイキングを楽しみに待っています。

 

 

こんにちは、Vim歴 20年ほどのタマキです。

(途中にEmacsに移行していた時期が2〜3年あったり、Sublime TextAtomなども事あるごとに試してたりします。)

マッドマックスの話ではなくて、Vimというエディタの紹介をしようと思います(今更感はありますが…)。

 

 

「Vim、触ってみたけど よくわからん」、「一文字も入力できんかった」、「興味はあるけど…」な人が対象です。

※「カーソル移動、挿入モードとノーマルモード移行、:q と :q! を覚えてれば、必要なときには十分!」な人は対象にしてませんw

 

 

始めて触れたのは学生時代。
商用UNIXで仕事をされてきた数学を得意とする先生の「viを使ったことないの?」という言葉からでした。
(DECのノートPCにLinuxを入れて仕事をしていた先生で、「まだおもちゃだけど、化けるかもね」と言っていたことが印象的でした。)

 

それまではVZ Editorを使ってました。
軽いというのもありましたが、「カーソルキーやファンクションキーを使わず、ホームポジションから移動せずに使える」というところが大きかったです。

 

早速、Viクローンを入れて試しますが、最初はなかなか思い通りにはいかず。
ですが、時間が経つにつれ、大分馴染んできます。

 

馴染んでくる感覚は「おもしろい」という要素になりますし、また「ホームポジションでほぼ完結する」というのは日常的に使えそうだなと。

 

そんな中、Viに対しての感想は「編集に強い」でした。

 

ということで、今回はテキスト編集にフォーカスして紹介します。

 

 

 * * *

 

 

テキスト編集の前にVimの特徴であるモード切り替えについて紹介します。

というのもココを理解しないと編集できないからですね…。

 

Vimではモードを切り替えて、テキスト編集を行います。

モードも下記のようにいろいろあるのですが、今回はノーマルモード挿入モードだけを使います。

 

ノーマルモード
    ベースとなるモード。立ち上げ時はこのモードです。
    文字の入力はできない。
    カーソルの移動やテキストのコピー/ペースト/削除などを行う。

 

挿入モード
    文字を入力するモード。

 

ヴィジュアルモード
    テキストを選択するモード。

 

コマンドラインモード
    検索・置換、ファイルのオープン、プラグインの実行など。

 

などなど。

 

 

実例を挙げた方がわかりやすいと思うので、 実際にはこんな感じで編集していきます。

 

1. ノーマルモードで、カーソルの移動。
    h, j, k, l : 左下上右
        この操作やモード切り替えで「なんでやねん」ってなる方が多いのですが、ホントに慣れですね。
        このキーで移動できるツールも結構多いです(gmailなんかも。同様にEmacs系も多いですね)。

 

2. 挿入モードに移行し、文字を入力。
    i : カーソル位置の前から挿入開始。
    a : カーソル位置の後ろから挿入開始。

 

3. ノーマルモードに移行(挿入モードを抜け)。 1. へ。
    ESC or Ctrl+[
    (私は Ctrl+[ を使っています)

 

 

これだけだと、「なんだコレ。モード変更って必要なん?」と面倒くさい感が強いですよね…。

 

ですが、 このモード変更が他のエディタを大きく異なるところですし、これが編集に強い理由になっています。

 

 

 * * *

 

そして、本題のテキスト編集

 

コマンドを組み合わせて編集していきます。

※ ここでのコマンドはノーマルモードで入力するキーの意。

 h は「左へのカーソル移動」コマンド。

 a は 「挿入モードへ移行し、カーソル位置の後ろから挿入を開始」のコマンド。

 

 

では、「テキストの削除」の例を。

削除はdコマンドになり、このあとにカーソル移動コマンドを入力すると削除できます。

 

このような感じ。

 

例1) 現在行から120行目まで削除。コマンドは d120G
    → dの削除コマンド後に120行まで移動コマンドを実行。

   120Gが”120行目までカーソル移動”の意味になります。

 

例2) 1単語分削除。コマンドは dw
    → dの削除コマンド後に1単語移動コマンドを実行。

   wが”次の単語の先頭に移動”の意味です。

 

つまり、移動コマンドや挿入モードへの移行が多彩であれば、目的のところまでの削除が素早く終わるということになります。

 

 

 

 

さて、「カーソル位置の文字を削除するコマンドは?」

 

 

 

そう、dl ですね (x というコマンドもあります)。

d で 削除コマンド。

l が右に一文字分移動コマンド。

 

 

 

では、少しレベルを上げます。

 

テキスト「hoge foo bar」のgの位置にカーソルがあるとしまして、行内検索移動のf/tコマンドと組み合わせてみると。

※f  コマンド : その行の順方向に一文字検索。 fx でカーソルより先のxという文字まで移動します。

※t  コマンド : その行の順方向に一文字検索(カーソルは文字の手前)。tx でカーソルより先のxという文字の一文字前まで移動します。

 

イメージ)

hoge foo bar

 

例3) oまで削除(oも削除)。コマンドは dfo

hoo bar

 

例4) fooの(最初の)oまで削除(oは残す) 。コマンドは dto

hooo bar

 

例5) bまで削除(bは残す)。コマンドは dtb or d2f<spaceキー>

   2はそのコマンドを2回続けるの意です。この場合、「2つ先の空白まで移動」となります。

hobar

 

 

他にも

例6) カーソル位置から段落の最後まで削除。コマンドは d}
例7) 段落毎削除。コマンドは {d}

    { で段落の始めに移動。その後段落の最後まで削除を実行。
例8) 段落毎削除後、挿入モードへ。コマンドは {c}
例9) 現在行から160行目までをヤンク(コピー)。コマンドは y160G
   ちなみにペーストコマンドは p or P。挿入する位置が変わります。

 

小技として、

例10) カーソル位置の大文字/小文字変換。コマンドは ~
例11) カーソル位置を一文字分修正(文字aに変更)。コマンドは ra

なんかもあります。

 

 

慣れれば、アタマで思ったことがすぐに実行できるようになってきます。
(カーソルキーを何度も叩くとか、マウスでの範囲選択で最後を慎重に選択するとかがなくなります)

 

このスピード感に慣れてくると、他のエディタを試しても(そのエディタの方がいい部分を十分に理解しつつも)戻ってきちゃうんですよね…。
そして、そのエディタのいいところをVimでできないだろうか、となるという…。

 

 

今回は、Vimを使っている人はどんな感覚なのか、という紹介でした(触りだけになりましたが)。

アタマで具体的にイメージ/理解できると実際に触れたときに馴染むのも早いと思うので、こういった感覚を意識して触れてもらえると「もうVimは怖くないっ!」となると思います

 

最後に、カーソル移動や挿入モードへの移行について、少しだけリストアップしておきます。

 

 

 

 * * * 付録 * * *

・ ノーマルモードでのカーソル移動

左下上右 : h, j, k, l
    この操作だったり、モード切り替えに「なんでやねん」ってなるヒト多いのですが、ほんと慣れです。
    また様々なツールでこのキーで移動できたりします(gmailなんかも)。

 

単語移動 : w/b, W/B, e/ge, E/gE
    大文字、小文字で単語として捉える範囲が異なります。

 

段落移動(上方向) : {
段落移動(下方向) : }

 

対となっている括弧へ移動( [], (), {} など) : %

 

最上行にジャンプ : gg
最下行にジャンプ : G
    行番号ジャンブ : <行番号>G
     例) 120行目にジャンプ : 120G

 

行の先頭へ移動 : 0
行の先頭(最初の文字)へ移動 : ^
行の末尾へ移動 : $
下の行の先頭へ : +
上の行の先頭へ : –

 

行検索

その行の順方向に一文字検索 : f

 カーソルより先にあるxまで移動 → fx
その行の逆方向に一文字検索 : F
その行の順方向に一文字検索 : t (カーソルは文字の手前)
その行の逆方向に一文字検索 : T (カーソルは文字の手前)

 

・挿入モードへの移行

カーソル位置の前から挿入開始 : i
カーソル位置の後ろから挿入開始 : a
行の先頭から挿入開始 : I
行末から挿入開始 : A
下の行に空行を挿入し、そこから挿入開始 : o
上の行に空行を挿入し、そこから挿入開始 : O
続く移動コマンドを実行後、挿入開始 : c

 

・ ノーマルモードに移行

ESC or Ctrl+[
(ホームポジションを崩したくないこともあり、私は Ctrl+[ を使っています)

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE