他にも、vi には便利な機能があります
指定した範囲に対して、シェルのコマンドを実行し、現在の内容と書き換えることができます
この構文は
範囲 !コマンド
になります
例として
linux fedora mac
windows mac win
linux fedora android
mac win ubuntu
debian redhat knopix
backtrack vine
という内容のファイルで
:%!cat -n
とすると
1 linux fedora mac
2 windows mac win
3 linux fedora android
4 mac win ubuntu
5 debian redhat knopix
6 backtrack vine
~
というように
番号がついて表示されます
また
:.,$w text.txt
というようすることで
指定した行を別のファイルに書き出すことも可能です
ただし、:w で保存したい場合
正規表現を使えません
正規表現を使って、当てはまる条件のものだけを別のファイルに抜き出すには
001:田中:男:21
002:鈴木:女:19
003:伊藤:男:31
004:山田:女:27
005:井上:男:18
006:佐藤:女:22
の場合
:w !grep “:男:” > men.txt
とすると
:男:
の文字を含む行だけを抜きだしたファイルを
作成できます
ちなみに内容は
001:田中:男:21
003:伊藤:男:31
005:井上:男:18
となり、無事に男の名前のみ抜き出したファイルが作成されました
ちなみに、行ったexコマンドの実行結果は
$history のように
:his
で実行結果をみれます
ただし、一度 vi を閉じると
この履歴は見れないようです