Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
UNIX(Linux)
入門編
- UNIX(Linux)とは
- ディストリビューションとは
- CentOSとMacOSとCUIについて
- 仮想化ソフトウェアを使ったCentOSのインストールとMacOSのCUI環境について
- ログインとrootユーザーとシャットダウン等について
- コマンドの構造と注意点について
- ファイルシステムとカレントディレクトリの移動と表示(cdとpwd)について
- 各主要ディレクトリの解説とディレクトリ等の内容表示(ls)について
- ちょっと高度なディレクトリの移動(cd)とパスについて
- 『ls』コマンドの応用(1)とドットファイルについて
- 『ls』コマンドの応用(2)
- タブキーを使った入力補完について
- ディレクトリの作成方法(mkdir)について
- ファイルの簡易作成(touch)とファイルについて
- 標準入出力とリダイレクション(>と>>)を使ったファイル生成とechoとcatについて
- ファイルとディレクトリの削除(rm)について
- ファイルとディレクトリのコピー(cp)について
- ファイルとディレクトリの移動と名前変更(mv)について
- viエディタとは
- viの基本的な使い方(1)
- viの基本的な使い方(2)
- ターミナル(sshとTera Term)を使ったリモート操作について
- ソフトウェアのインストール方法(yumとパッケージ管理ツール)について
- ユーザーの概要と確認と追加と切り替え(adduserとsu)について
- ユーザーのパスワードと削除と更新と管理者権限での実行(passwdとuserdelとusermodとsudo)について
- グループの概要と確認方法(groups)について
- グループの追加と削除と設定変更(groupaddとgroupdelとgroupmod)とユーザー追加方法について
- パーミッション(権限)について
- パーミッションの設定方法(chmodとchown)について
- トップページ
- UNIX(Linux)入門編 - viの基本的な使い方(1)
viの基本的な使い方(1)
みなさまこんにちはでございます。続きまして『vi』の使い方を色々と見ていきましょう。
んで最初にご報告なのでございますが今回は「『vi』を使うにあたっての最低限の知識」のご紹介とさせて頂きますね。というのも『vi』(vim)は超絶使いやすい素敵エディタなわけなのですが使いやすい反面、ものすごーーーーく色々な機能がございましてそれらを全て紹介するとなるととんでもない文章量になっちゃうわけなんです。
多分著者が普段使ってるコマンドとかを紹介するだけでも薄い本が一冊書けるくらいの量になっちゃって著者の心が折れる事うけあいなので今回は超基礎的な部分って感じにさせて頂きたく存じます(キリッ。
(´-`).。oO(『Vim(vi)入門編』みたいな記事は気が向いたら書きます...多分...)
あとこれから『vi』を初めて触るって方もちょいちょいいらっしゃるかと思うのですが『vi』系のエディタをなるべく最短で使いこなすコツは「体で覚える」ってことになりましてですね、つまり勉強とかよりもスポーツとか運動とかそっちに近いものなんだなって意識を持っておくと良いかもしれません。
パソコンな世界なのに何を言ってるかわからないって思った方も多いと思うのですが職場とかでバシバシ『vi』を使ってる方に「『vi』は勉強とスポーツどっちに該当すると思いますか?」と聞いてみると多分ほとんどの方が「スポーツ」って言ってくれるかと思います。おそらくやり込んだゲームとかで手と指が勝手に動くような感覚に近い感じかなって思いますのでそんな意識を持ちつつ色々とやっていきましょう。
というわけでまずいつも通りCentOSにログインしてみます。カレントディレクトリはどこでもOKなのですが『root』ユーザーでログインすると初期カレントディレクトリが『/root』になりますのでまたもやここで作業していきたいと思います。
というわけでまず『vi』を起動する為のコマンドを紹介します。以下のような感じです。
[root@localhost ~]# vi test.txt
これについては簡単ですね、『vi ファイル名』って感じで打ち込めばOKです。この引数のファイル名の部分ですが「存在していないファイル名を指定した場合は新規ファイルの作成、すでに存在しているファイル名だった場合はそのファイルの編集」という感じになります。
そして上記のコマンドをタイピングしてエンターキーを押してコマンドを実行させるとこんな感じになります。
~ ~ ~ ~ ~ "test.txt" [New File]
画面いっぱいに『~』が出てきて下の方に「"test.txt" [New File]」って感じの現在編集中のファイル名とかが出てきてますね。これが『vi』が起動している状態になります。
んでここが慣れないとややこしいのですが今は「『vi』が起動している状態」でございますので「OSがコマンド受け付け待ちをしている状態(プロンプトが出力されている状態)」とは全く違います。なのでこの状態だと『ls』とか『cd』とかそういうOSで使うコマンドは入力出来ませんのでご注意です。
そして『vi』には『モード』という非常に特徴的な仕組みがございまして『コマンドモード』(ノーマルモード)と『インサートモード』(編集モード)と『exモード』という3つの『モード』が存在しています。最初に『vi』を起動した状態だと必ず『コマンドモード』な状態になっていますね。
『コマンドモード』はその名の通り「コマンドを打つ為のモード」になりますのでこの状態だとテキストの入力が出来ません。
「じゃあテキスト入力する時はどうするのー?」と思った方は『i』キーをバシッと押してみましょう。はい、皆様のお手元のキーボードに居るであろうそこの『i』くんでございます。
『i』キーを押すと以下のような感じになります。
~ ~ ~ ~ ~ -- INSERT --
下部に「-- INSERT --」みたいに出てきてますね。これが『インサートモード』な状態になります。この状態だとテキストを入力出来るようになってますので以下のような感じでお好きなテキストを入力してみましょう。ちょいと練習したい事があるので以下のように複数行入力して頂けるととっても嬉しいでございます。
Miku Hatsune This is a CentOS! ~ ~ ~ ~ ~ ~
そしてテキストの入力が終わったら『エスケープ』(ESC)キー、または『Control』キーを押しながら『[』キーを押してみて下さい。Mac使いの方は『command』キーと間違えないようにして下さい、『command』ではなく『Control』キーでございます。『Control』と『command』を間違えちゃうのはMac使いの方あるあるでございますね。
そうすると以下のように
Miku Hatsune This is a CentOS! ~ ~ ~
「-- INSERT --」っていうのが消えましたね。これでまた『コマンドモード』に戻ってます。
このように「『vi』では『モード』があって、テキストを編集するには『インサートモード』な状態で在る必要がある」って覚えておいて下さい。
そしたら「カーソルの移動」についてやっていきましょう。今現在は『コマンドモード』なわけなのですがその状態でキーボードの方向(矢印)キー、皆様のお手元にある上キーとか左キーとかですね。これを押して見て下さい、そうするとカーソルが移動できたかと思います。
そして『vi』では矢印キー以外にもカーソルの移動を行うことができます。皆様のお手元の『h』キーから右に進んで『h』、『j』、『k』、『l』が並んでますね。それらを適当に押してみて下さい。するとカーソルが移動できたと思います。『h』なら左、『j』なら下、『k』なら上、『l』なら右って感じですね。
んで慣れてしまうと矢印キーよりも『h』キーとかを使ったほうが遥かに楽なので皆様にはぜひ矢印キー以外のキーを使って移動するようにして頂きたい次第でございます。こういうエディタの扱い方って作業時間に直結するので意外と侮れません。
そして一点注意点がございますが古いバージョンの『vi』になると方向キーではカーソルの移動はできません。なぜ移動できないかというとその時代のキーボードには方向キーが存在していない事が多く、『vi』の製作者のウィリアム・ネルソン・ジョイさんが使っていた当時のキーボードにも方向キーが存在していなかったかららしいです。まあ古いバージョンの『vi』を触る機会もめっきり減っちゃってますが一応覚えておきましょう。
カーソル移動の際に、『移動したい行とか文字の数値』を打ち込んだあとに『h』、『j』、『k』、『l』を使うとその打ち込んだ数値分移動することができます。
例えば『5j』と打つと5行下へ、『3l』と打つと3文字分右へ、といった感じです。
これ覚えておくと色々と捗るのでぜひ使って見て下さい。
さて先程は『i』キーを押して『インサートモード』に移っていましたが実は『i』キー以外にも『インサートモード』に移動することの出来るキーがいくつかあります。
最初に紹介するのは『a』と『A』です。『a』を押すと現在のカーソルの右側に移動してから『インサートモード』に入れます。『A』を押すと行の末尾に移動してから『インサートモード』に入れます。そして大文字の『I』です。これは行の先頭に移動してから『インサートモード』に入れます。この3つだと『A』と『I』はかなり便利なのでぜひ使ってみて下さい。
続いて『o』と『O』です。『o』は現在の次の行に空行を追加しつつ『インサートモード』へ、『O』は現在の前の行に空行を追加しつつ『インサートモード』へ入れます。これは2つとも使い勝手が良いですね。
『インサートモード』に移動するキーはこのあたりを抑えておけば大体なんとかなる感じです。他にもちょいちょいあるので興味があったら調べてみて下さい。
あ、あと『コマンドモード』のときのキーボードの入力モードは半角英数である必要がありますので現在入力中のキーボードの状態が日本語モードなら半角英数モードに変更しちゃいましょう。
さて入力はOKなので次は入力したテキストの保存と『vi』エディタの終了の仕方です。まず保存したり終了したりするには『exモード』に移行する必要があります。んで『exモード』に移動するにはどうすればいいのかというと『:』キーを押してみましょう。すると以下のように
Miku Hatsune This is a CentOS! ~ ~ ~ :
画面の下部に『:』が出てきましたね。これで『exモード』にちゃんと移行できてます。そしたら『:』を押したあとに『w』を入力してエンターキーをバシッと押して下さい。すると「"test.txt" 3L, 32C written」みたいな出力がされると思います。これで保存はOKです。
そしてもう一度『:』を押した後に『q』キーを押してエンターキーを押してみましょう。そうするとプロンプトの画面に移行できたと思います。これで『vi』は終了して通常の画面に戻れています。
んでもう一度『vi test.txt』と入力して頂いて『vi』を起動させてみましょう。
そして適当にテキストを編集してみます。「This is not a pen!」って文章を追加してみました。
Miku Hatsune This is a CentOS! This is not a pen! ~ ~
そして『コマンドモード』に戻って『:q』を入力して『vi』を終了させてみます。しかし以下のように
Miku Hatsune This is a CentOS! This is not a pen! ~ ~ ~ ~ E37: No write since last change (add ! to override)
「変更が保存されてないよ!」って忠告されて『vi』を終了することはできません。このように「変更を保存しないと『vi』を終了することはできない」って動作は覚えておきましょう。
そして「でも変更を破棄してでも終了したいなー!(*'ω'*)」って気分になったら『:q!』を使ってみましょう。これを打つと変更を破棄した状態で『vi』を終了させることができます。
なので先程の状態で『:q!』を打つと
Miku Hatsune This is a CentOS! This is not a pen! ~ ~ ~ ~ :q!
[root@localhost ~]#
いつものプロンプトが出力されている画面に戻ってきましたね。んでもういっちょ『vi test.txt』と打って『vi』を開いてみると
Miku Hatsune This is a CentOS! ~ ~ ~ :
「This is not a pen!」が追記されていない状態になっていますね。こんな感じで『:q!』を使えば変更を破棄して『vi』を終了させることができます。
そして最後にテキストを保存したあとそのまま『vi』を終了させる事が出来る『:wq』を紹介しておきます。『:w』で保存して『:q』で『vi』を終了させるっていう動作を『:wq』と打ち込むことでさくっと実行できるのでとっても便利です。
ちょいと試してみると先ほどのように「This is not a pen!」を追記して
Miku Hatsune This is a CentOS! This is not a pen! ~ ~ ~ ~
この状態で『:wq』とタイピングします。
Miku Hatsune This is a CentOS! This is not a pen! ~ ~ ~ :wq
そしてエンターキーをバシッと押せば
[root@localhost ~]#
プロンプト画面に戻れます。そしてもういっちょ『vi test.txt』と打って『vi』を起動してみると
Miku Hatsune This is a CentOS! This is not a pen! ~ ~ ~ ~
「This is not a pen!」がちゃんと保存されていますね。
こんな感じで『:wq』は使い勝手がとっても良いのでぜひ覚えておいて下さい。
(´-`).。oO(ちょっと余談ではございますがこの『モード』という仕組みは使いこなすと非常に強力で素晴らしいものになるのですが...)
(´-`).。oO(この『モード』くんのせいである程度の知識が無いと1ミリも使えないって事態を引き起こしてしまっているのは内緒でございます...)
というわけでキリが良いので一旦ここで記事を終わらせますね。次の記事でも『vi』についてやっていきます。ではまたお会いしましょう。
この記事は桜舞が執筆致しました。
著者が愛する小型哺乳類 |
桜舞 春人 Sakurama HarutoISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。 |
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。