| $ lv ~/.bashrc
.
.
.
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac
.
.
.
 | 
| $ lv sugoi_gazou.gif
GIF89ah^Aü^@õ5^@^P^P^P^[^[^["""(((---111333888AAADDDUUU___fffnnnwwwxxx{{{}}}<9D>SS<9A>\\<97>ff<90>xx¤AA JJÿw<81><81><81><84><84><84><88><88><88><8A><8A><8A><94><94><94><96><96><96><99><99><99>ªªª>>>>>>ÿ<88><88>ÿ<8F>ÿ<99><99>ÿ<9F><9F>ÿ££ÿ¤¤ÿ
ªªÿ¯¯ÿ>>>>ÌÌÌÏÏÏÑÑÑÝÝÝÿÀÀÿÌÌÿÝÝîîîÿîîÿÿÿ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@!ù^D^@^^^@^@^@!þ4 Image generated by GPL Ghostscript (device=pnmraw)
^@!ÿ^KNETSCAPE2.0^C^A^@^@^@,^@^@^@^@h^Aü^@^@^FþÀ<9A>pH,^ZH¤rÉl:<9F>?¨tJ-Z¯Ø¬vËíz¿à°xL.<9B>Ïè´zÍn>>ßð¸|N¯Ûïø 1/4 ~Ïïûÿ<80><81><82><83><84><85><86><87><88><89><8A><8B><8C><8D><8F><90><91><92>W^L¯<95>?^L <98>
/^\^\μ<96>¡¡
<93>ª<<ª??<95>μ^\?¤?¯ ¤μ
! ^\"¬ÀÁ<8B>®°?´<99>¯   ±? £¬©ÂÒÓ<81><95><98>μ<9A> 1/4 <95> Ý
¢ÖÔäåùÆæéê<86>¿ëîïðñòóôõö÷øò<98>×ùýþ×?æ<8C>úǰà^Sôè<84>´àÀàÁ<87><87>^P£Ê<9C>ȱ¢Å<8B>^X?êÜȱ£Ç Ã<8A>^\É?£^F<86>^LÜÌ      ¸^@<86>ÃÊ<98>àá^B^E
^UJFD ?gþE<9E>><83>B^D*4(Ñ¢#O2^X°`N1ZC^Bp¡±bÅ<88>< | 
$ vi [ファイル名]引数のファイル名は既に存在するファイル名, あるいはこれから作りたい新規のファイル名を入力します.
:wqファイルの編集作業を保存したり, 終了してコマンドプロンプトに戻るには幾つかの方法があります.
| :q | vi を終了する | 
| :q! | バッファでの編集内容を放棄し vi を強制的に終了する | 
| :w | バッファの内容をファイルに保存 | 
| :w (ファイル名) | バッファの内容を指定したファイル名で保存 | 
| :w! | バッファの内容を強制的にファイルに保存 | 
| :wq | バッファの内容をファイルに保存し, vi を終了する. | 
| ZZ | バッファの内容をファイルに保存し, vi を終了する. | 
 
 
| $ vi rensyu.txt
i
     :
     :
 | <-- rensyu.txt という名前の新規ファイルを viで開く <-- 挿入モードへ移る(現在いるカーソルの左側に挿入) <-- 編集 | 
以下のコマンドで書き込んだ内容が表示されましたか? 表示されれば OK です.
$ cat rensyu.txt
先ほど編集したファイルを vi で開いて, 文字の削除, 行の挿入・削除などを行い, 別名(rensyu2.txt)で保存してみましょう. 一文字削除や一行削除は コマンドモードからできます. (以下はその例)
| $ vi rensyu.txt
     :
     :
 | <-- [練習1] で作成した rensyu.txt を viで開く <-- 適宜, 操作・編集してみましょう | 
以下のコマンドで変更した内容が表示されましたか? 表示されれば OK です.
$ cat rensyu2.txt
どうですか? うまく作成できましたか?
初歩的な vi の使い方はなんとなく理解できたでしょうか? 実際にはもっといろいろな使い方があるのですが 一度に覚える必要はありません. 実際にファイルの編集をしながら, "かゆい"ところがあったら その都度新しい命令, 機能を調べてゆけば良いです. 最低限, ファイルのオープンクローズ, 挿入モードとコマンドモード間の移り方("a,i,o"コマンドと ESC キー), 1文字削除("x"), コマンドモードでのカーソルの動かし方が わかっていれば, なんとかなります. もう少し高度な使い方をしたい人は自分で調べてみましょう.
では, 次はエディタを用いてシェルスクリプトを作成してみましょう.
「コマンドモード」で実行する基本的なコマンドは次の通りです.
h 
  j 
  k 
  l 
  a 
  A 
  i 
  I 
  o 
  O 
  x 
  dd 
  u 
  /文字 
  ?文字 
  n 
  N 
  :r ファイル名 
  「挿入モード」で実行する基本的なコマンドは次の通りです.
ESC キー 
  DEL キー 
  上で紹介したのは, vi を使用する上での基本的な事項だけです. 以下の内容は授業では説明しませんが, より便利に vi を使う参考として時間と興味のある方は御一読を.
※以下は断りのない限り「コマンドモード」で使用するコマンドです.
※いきなりですが, これは「コマンドモード」とは関係ありません.
| $ vi +18 
      [ファイル名]  | ファイルをオープンし, 行18に位置づける | 
| $ vi +/"mustard greens" 
      [ファイル名]  | ファイルをオープンし, 最初の"mustard greens"にカーソルを移動 | 
| $ vi -r 
      [ファイル名]  | クラッシュしたファイルを回復し読み込む | 
| $ view [ファイル名] 
 | 読むだけのためにファイルを読み込む | 
w 
  W 
  b 
  B 
  Enter キー 
  Backspace キー 
  スペース キー 
  H 
  M 
  L 
  Ctrl-F 
  Ctrl-D 
  Ctrl-B 
  Ctrl-U 
  G 
  21G 
  D 
  :5,10 d 
  | yy | 行の取り込みまたはコピー | 
| Y | 行の取り込みまたはコピー | 
| dd | 行の削除 | 
| P | 取り込みまたは削除された行を現在行の上に挿入 | 
| p | 取り込みまたは削除された行を現在行の下に挿入 | 
| :1,2 co 3 | 行1から行2までを行3の下へコピー | 
| :4,5 m 6 | 行4から行5までを行6の下へ移動 | 
| :set nu | 行番号の表示 | 
| :set nonu | 行番号の非表示 | 
| :set ruler | ルーラーの表示 | 
| :set noruler | ルーラーの非表示 | 
| :set showmode | 入力モードの表示 | 
| :set noshowmode | 入力モードの非表示 | 
| Ctrl-G | ファイル名, 行数, 位置の表示 | 
| Ctrl-L | 画面の再描画 | 
vi 以外にもテキストエディタは数多く存在します. たとえば, vi と並ぶ代表的なエディタとして emacs があります. emacs は vi とは対照的に, 動作が多少重いながらも使いやすく なおかつ多機能であることを特徴としています. ちなみに vi 信者と emacs 信者の対立は計算機関係者の間では 有名であり, いずれも自らが最高のエディタであると主張して 譲りません. 興味を持った方は「エディタ戦争」について調べてみるとよいでしょう. (ただしもちろん実習後に!)
実習では最低限知っておくべきエディタとして vi を取り上げましたが, 好みに応じて他のエディタを使ってもけっこうです.
| 最終更新日: 2013/04/16(高橋康人) さらに全面改稿 |