viエディタの使い方 基本編

/ vi/vim / Comment[0]
viはほとんどのUnix/Linuxシステムにデフォルトでインストールされているテキストエディタです。
viというのはコマンドモードと入力モードの2つがあり、このコマンドモードというのがものすごく便利なんです。
マウスを使うことなく検索や置換、コピペなどといった操作から、正規表現を使った高度な操作も使用可能です。
もちろんキーボード上でね。

まずはviエディタの基本的な使い方から説明していきます。
なお、Unix/Linuxの基本的なコマンドライン操作は習得していることが前提です。

  • 次のコマンドでviを起動します。

  • $ vi

    ~
    ~
    ~
    ~
    ~ VIM - Vi IMproved
    ~
    ~ version 7.3.429
    ~ by Bram Moolenaar 他.
    ~ Modified by pkg-vim-maintainers@lists.alioth.debian.org
    ~ Vim はオープンソースであり自由に配布可能です
    ~
    ~ Vimの登録ユーザになってください!
    ~ 詳細な情報は :help register
    ~
    ~ 終了するには :q
    ~ オンラインヘルプは :help
    ~ バージョン情報は :help version7
    ~
    ~
    ~
    ~
    ~
    0,0-1 全て
    ファイルを指定せずにvi単体で起動させるとこのようなバナーが表示されます。無視しておkです。
    通常のメモ帳などと違い、起動直後のこの時点では「コマンドモード」になっておりいきなり入力を開始することは出来ません。

  • 入力モードに切り替えるには
  • iキー(insertの略)を押します。
    すると左下に「-- 挿入 --」と表示され、テキストが入力できるようになります。
    入力モード開始キーは他にもaとoもあります。

    • i カーソル位置から入力開始
    • I 行の先頭から入力開始
    • s カーソル位置の文字を置換して入力開始
    • a カーソル位置の右側から入力開始
    • A 行の末尾から入力開始
    • o カーソル位置の下行から入力開始

    iを押した後に試しに下記のように打ち込んでみましょう。
    成し遂げんとした志を

    ただ一回の敗北によって捨ててはいけない。
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    -- 挿入 -- 3,61-41 全て


  • 入力できたら次は名前をつけて保存です。

  • まずESCキーを押して入力モードから抜けましょう。

    viコマンド単体で起動させた為まだファイル名が付いていない状態です。
    なので「:file <filename>」でファイル名を指定します。
    成し遂げんとした志を

    ただ一回の敗北によって捨ててはいけない。


    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    :file text.txt
    "text.txt" [変更あり][未編集] 5 行 --80%-- 4,0-1 全て
    ※セミコロンも入力します。
    ファイル名が指定されたので「:w」で保存します。
    :w
    "text.txt" [新] 5L, 95C 書込み 4,0-1 全て

    「:q」でviを閉じます。このとき、変更点がある場合は警告が表示されて閉じることが出来ません。
    :q

    それでも保存を破棄して強制的に閉じるには「:q!」とします。
    :q!

    「:wq」と保存と終了を同時に行うことも可能です。
    :wq

    これで通常のメモ帳の名前をつけて保存という作業が終わりました。

    開いてみましょう
    $ vi text.txt
    成し遂げんとした志を

    ただ一回の敗北によって捨ててはいけない。


    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    "text.txt" 5L, 95C 1,1 全て
    無事に書き込めています。

  • 行を削除してみる

  • 通常のメモ帳などの場合、行を削除するのに端から端まで選択してバックスペースかdelキーで消すのが一般的ですが、
    viの場合は「dd」と打ち込むだけで行を削除することが出来ます。

    まずESCキーで入力モードを抜けてから、消したい行にカーソルを持って行き「dd」と打ちます。
    このddというコマンドはvi上ではエコー(表示)されません。
    成し遂げんとした志を

    ただ一回の敗北によって捨ててはいけない。

    実行後
    成し遂げんとした志を
    ただ一回の敗北によって捨ててはいけない。


    次のように任意の行数を消すことも可能です。
    d3d
    UserAgentを詐称するFirefoxアドオン「User Agent Overrider」 (06/26)
    第1854回「あなたの立ち位置は右側?左側?」 (06/26)
    Linux ノートPCのバッテリー状態を確認するコマンド acpi (06/24)
    CentOSを最小ネットインストールする (06/24)
    自分がギターを始めたときに練習したフレーズ (06/24)
    Kali LinuxというBackTrackの後継ディストリ (06/23)
    コンソール風に表示されるHTMLタグを作りたい (06/23)
    UbuntuServer Apache2.4 DocumentRoot変更とモジュール有効化 (06/22)
    UbuntuServerでノートPCを閉じてもサスペンドしないようにする (06/22)
    UbuntuServerにXをインストール (06/21)
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    10,1 全て

    実行後
    UserAgentを詐称するFirefoxアドオン「User Agent Overrider」 (06/26)
    第1854回「あなたの立ち位置は右側?左側?」 (06/26)
    Kali LinuxというBackTrackの後継ディストリ (06/23)
    コンソール風に表示されるHTMLタグを作りたい (06/23)
    UbuntuServer Apache2.4 DocumentRoot変更とモジュール有効化 (06/22)
    UbuntuServerでノートPCを閉じてもサスペンドしないようにする (06/22)
    UbuntuServerにXをインストール (06/21)
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    3 行 削除しました 3,1 全て


  • 元に戻すには「:u」コマンドを使います。

  • これも「:u2」「:u5」などと:uの後に数字を入れることでその場面までさかのぼって元に戻すことが出来ます。
    :u
    UserAgentを詐称するFirefoxアドオン「User Agent Overrider」 (06/26)
    第1854回「あなたの立ち位置は右側?左側?」 (06/26)
    Linux ノートPCのバッテリー状態を確認するコマンド acpi (06/24)
    CentOSを最小ネットインストールする (06/24)
    自分がギターを始めたときに練習したフレーズ (06/24)
    Kali LinuxというBackTrackの後継ディストリ (06/23)
    コンソール風に表示されるHTMLタグを作りたい (06/23)
    UbuntuServer Apache2.4 DocumentRoot変更とモジュール有効化 (06/22)
    UbuntuServerでノートPCを閉じてもサスペンドしないようにする (06/22)
    UbuntuServerにXをインストール (06/21)
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    10,1 全て


  • コピペ

  • yyで行をヤンク(コピー)することが出来ます。ヤンクされた文字列は"vi上のクリップボード"のようなところに一時保存されます。
    また、ddで削除した部分も"vi上のクリップボード"に一時保存されます。
    yyもddと同じくvi上にはエコーされません。
    UserAgentを詐称するFirefoxアドオン「User Agent Overrider」 (06/26)
    第1854回「あなたの立ち位置は右側?左側?」 (06/26)
    Linux ノートPCのバッテリー状態を確認するコマンド acpi (06/24)
    CentOSを最小ネットインストールする (06/24)
    自分がギターを始めたときに練習したフレーズ (06/24)
    Kali LinuxというBackTrackの後継ディストリ (06/23)
    コンソール風に表示されるHTMLタグを作りたい (06/23)
    UbuntuServer Apache2.4 DocumentRoot変更とモジュール有効化 (06/22)
    UbuntuServerでノートPCを閉じてもサスペンドしないようにする (06/22)
    UbuntuServerにXをインストール (06/21)
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    1,1 全て

    ペーストはpで行います。実行するとカーソルの下の行にペーストされます。
    UserAgentを詐称するFirefoxアドオン「User Agent Overrider」 (06/26)
    UserAgentを詐称するFirefoxアドオン「User Agent Overrider」 (06/26)
    第1854回「あなたの立ち位置は右側?左側?」 (06/26)
    Linux ノートPCのバッテリー状態を確認するコマンド acpi (06/24)
    CentOSを最小ネットインストールする (06/24)
    自分がギターを始めたときに練習したフレーズ (06/24)
    Kali LinuxというBackTrackの後継ディストリ (06/23)
    コンソール風に表示されるHTMLタグを作りたい (06/23)
    UbuntuServer Apache2.4 DocumentRoot変更とモジュール有効化 (06/22)
    UbuntuServerでノートPCを閉じてもサスペンドしないようにする (06/22)
    UbuntuServerにXをインストール (06/21)
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    1,1 全て


とりあえず最低限覚えていればしのげること
  • viにはコマンドモードと入力モードがある
  • iキーで入力モードになる ESCキーでコマンドモードに抜ける
  • カーソル移動はESCキーからの十字キー(環境によってはHJKLキー)
  • 保存して終了はESCキーからの:wq
  • 変更を破棄して終了はESCキーからの:q!


次:vi エディタの使い方 カーソル移動
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可