viリファレンス

viリファレンス

用途

テキストエディタを起動する

書式

vi [ファイル名s]

モードの説明

  • Escコマンドモード
  • i テキスト入力モード(Escで終了)
  • : exコマンドモード(Esc*2で終了)

終了と保存

  • :q 保存せずに終了(未保時は終了できない)
  • :q!保存せずに強制終了
  • :w ファイルを保存
  • :wq保存して終了
  • ZZ :wqと同じ
  • :w Name指定した名前でファイルを保存

カーソルの移動

  • h(←)左に1文字移動
  • j(↓)下に1文字移動
  • k(↑)上に1文字移動
  • l(→)右に1文字移動
  • w単語の先頭へジャンプ
  • e単語の末尾へジャンプ
  • b単語単位で逆方向へジャンプ
  • ^行頭へジャンプ
  • $行末へジャンプ
  • G 最後の行へジャンプ
  • nGn行目へジャンプ
  • Ctrl+f1ページ先へ進む
  • Ctrl+b1ページ前へ戻る

テキスト入力モードへの移行

  • iカーソルの位置で文字入力
  • I行頭から文字入力
  • a次の文字から入力
  • A行末に入力
  • o次行を作成して入力
  • O現在の場所に行を作成して入力

置換処理

  • cw現在の単語を置換
  • cc現在の行を置換
  • c$カーソル位置から行末までを置き換える
  • r 現在の文字を置換
  • R 現在の文字から行末に向かって上書き
  • ~ 現在の文字の英大・英小文字の変換

削除処理

  • x 現在の文字を削除
  • nx現在の文字から行末に向かってn文字分を削除
  • X 直前の文字を削除
  • nX直前の文字から行頭に向かってn文字分を削除
  • dd 現在の行を削除
  • ndd現在の行からn行削除

複写処理

  • yw現在の単語をコピー
  • yy現在の行をコピー
  • nY現在の行からn行をコピー
  • p 次行を作成して複写
  • P 現在の場所に行を作成して複写

その他の処理

  • u直前に実行したコマンドの取り消し
  • U現在の行に対して行われた変更の取り消し
  • .直前の変更コマンド(削除、置換など)の繰り返し
  • J現在行と次行を1行にまとめる

文字列コマンド一覧

  • :hヘルプの呼び出し
  • :L,M dL行目からM行目までを削除
  • :!cmdシェルコマンドの実行
  • :shellシェルの呼び出し。exitでviに戻る
  • :set number行番号を表示
  • :set nonumber行番号を非表示
  • :set noaiオートインデントを解除
  • :s/L/M/g現在の行のLをMに置換
  • :%s/L/M/g全行のLをMに置換
  • :viusageコマンドモードのコマンド一覧を表示
  • :exusageexコマンドモードのコマンド一覧を表示

マニアックなviエディタ

上記で紹介した操作例以外にも、マニアックな操作方法がまだまだ存在します。

あまりにも多いため、ここでは全てを紹介することができませんが、
「:viusage」や「:exusage」と入力することで、
コマンドの一覧を表示することができますので、
確認してみると良いでしょう。

こんな機能一体誰が使うんだ?
なんて思わせてくれるコマンドが、きっとみつかるかもしれません。

viエディタのすすめ

よくもう一つのエディタ「Emacs」をメインで利用されている方がいますが、
これからLinuxを始められる方にはもちろんのこと、特に仕事でLinuxを扱う方には、
vi(vim)エディタに慣れておくことをおすすめします。

viをおすすめする理由ですが、
viは、ほぼすべてのLinuxに標準搭載されているのに対して、
Emacsは、環境によって搭載されていないことがあるためです。

個人所有のLinuxシステムでしたら、Emacsをインストールしてしまえば良いのですが、
仕事で扱うシステムに対して、操作ができないからという理由で、
勝手にソフトウェアをインストールすることは、難しい場合が結構あります。

ちょうど、CUI環境とGUI(X Window)環境の関係みたいですね。
(※マウスで操作がしたいので、X画面を立ち上げるみたいな…)

最初は、とっつきにくそうに見えるviエディタですが、
覚えやすく、軽快で、なんともマニアックな味のあるエディタです。

タグ

2009年8月29日 | コメントは受け付けていません。 | トラックバックURL |

カテゴリー:LinuxTips

トラックバック&コメント

コメントは受け付けていません。