viでコマンドモードに戻れない、ESCキーが効かない時はctrl+cと:wq
今更ながら人工知能とか機械学習とかディープラーニングとかの界隈に興味を持って、手始めにTensorflowを使ってプログラミングをしてみるということを始めたところ、いきなりつまずきました。
Contents
viでコマンドモードに戻れない
参考にしたのは以下のサイト。
Mac OS XにTensorflowをインストールして、Hello worldまでやってみる
Macのターミナル上でのテンソルフローのダウンロード、インストールから始まって、初歩の初歩であるテキストメッセージを出力する、という過程を丁寧に説明されており、十中八九失敗するはずはないのですが、私には、入門者であっても失敗しないはずの丁寧な説明ですら理解できないところがありました。
具体的には以下でviのコマンドを投げるところ。
(tensorflow) $ vi helloworld.py
これでテキストエディタが立ち上がってテキスト編集できるようになり、Hello World!を出力するためのプログラムを打ちこんでいくわけです。
その後このエディタを保存してコマンドモードに戻り、以下のコマンドで、保存後のテキストエディタ内のプログラムを実行することになります。
(tensorflow) $ python helloworld.py
この、「vi」でテキスト編集に入る、という点と、どうやったらテキスト編集モードからコマンドモードに戻るか、という点について、上記サイトも含め、似たような「まずはハローワールドを出力してみましょう」系のサイトには説明がありません。
まあ、LinuxとかPythonとか普通に使ってて慣れてることを前提に書かれた記事なので仕方がないでしょうが、その入り口にすら立っていない私はやや困った。
というわけで、どうやったらvi(vim?)モードからコマンドモードに戻るのかを考えました。
普通は「ESCキー」を押せば大体戻れるはずなのですが、効きません。
で、いろいろ調べてみると、やっぱりEscキーで問題ない、という内容のサイトがゴロゴロ引っかかってきて、そうなると私のキーボードのEscキーは死んでる・・・?
詰んだ。プログラムを実行するというスタートラインにすら立てないままいきなり挫折とは。
さらにいろいろ調べるとshift+ESCで行けるとかいうサイトもありましたが、それも効かない。
困った。
さらに、コントロールキーを使った対処法も見つかりました。
例えば、ctrl+[ とか、ctrl+c とか。
しかしそれでもviを抜けられないぞー、なんでだー。
コマンドラインの「$マーク」が恋しい。ドルマークに会いたい。どこへ逃げてしまったのか、ドルマーク。
と苦悶していたら、以下のことに気づいた。
ctrl+cでexitできるようにして:wqで保存して終了
viモードに入ったばかりの時には、一番下のラインに「Insert」と記載されていたと思いますが、control+cを押すと、このメッセージが「Type :quit<Enter> to exit Vim」と変化する。
あ、これなんか一歩前進した感がある。
しかしリターンキーとかいろいろいじっても何も起こらないし、何をすればいいのかと調べてみると、viのエディタで「:wq」を押すと、保存して終了、を実行できる、みたいな記述をネット上で見つけたので、やってみた。
そして:wqを入力したら、Enterキーを押す。
キター! 愛しの$マーク!
この状態で上記サイトで紹介されている「python helloworld.py」を実行すれば、HelloWorldメッセージが出ます。
Tensorflowで機械学習やりたいなら、まずはpythonとターミナルを使えるようにしておきましょう
というわけで、最近やたら機械学習とかテンソルフローとか聞くのでかじってみたい、と思う人は、いきなりそこから入れません。
まずパイソンとターミナルの基本を理解してないと、機械学習の入り口にすら立てないから、そっちの勉強から始めましょう。
ただ、理論理解してないけどとりあえずテンソルフローがどんなものか手でいじってみたい、という方は上記のような基本的な部分でつまずくはずなので、viでコマンドモードに戻れなくなった初心者の方は、上で書いたことを参考にされてください。