しかし僕が探した範囲だと、機能紹介やショートカットの紹介はあっても、実際に「こうやって入門しろ」という情報が見つかりませんでした。
そこで、具体的に「こうやってみれば素晴らしさが分かる」というのがあれば教えてください。もしくはみなさんがどうやって入門し、ステップアップしていったかというお話だけでも結構です。
(前提として私はプログラマで、vim、emacsでファイルを開いて編集->保存ぐらいはできるとします)
viやemacsのすぐれているところは文字コードの判定や変換がわりと正確なことです。ちゃんと設定してやれば、なんでも開けます。
あとは、プログラミング用の色づけかな。
でも、今viやemacsを使ってないということは、windowsですよね。winの場合は、あんまり必要ないのでは。改行とかもdosの方がいいわけでしょ。
http://www.linux.or.jp/JF/JFdocs/Emacs-Beginner-HOWTO-2.html
http://nanasi.jp/articles/howto/tutorial.html
vimやemacsのチュートリアルをやりましたか?
以下のキー入力でチュートリアルが始まります。
vim 「:Tutorial」を入力
emacs 「C-h t」 を入力
このチュートリアルで初歩的な操作方法を身につけれると思います。自分はvimでサーバの設定ファイルを編集していくうちに慣れていきました。
なるほど、チュートリアルが有効ということですね。ありがとうございます。
vimについてです。
まずはキャンセルから始めるのがいいのではないでしょうか。困ったときにへんな状態から抜けれるのは大事だと思います。Escがそれにあたります。
そのあとは上下左右に移動するhjklキーになれるが一番かと。矢印キーと行ったり来たりするよりずっと移動が速くなります。
それから編集・移動するためのコマンド(:行番, x, d, y, ...)をいくつか覚えればそれだけで大抵のエディタよりずっと作業しやすいと思います。
そこからは自分が便利そうだと思った事をやっていけばいいと思います。
個人的には、ビジュアルモード(特にCtrl-v)と画面分割(:split, ...)が便利だと思います。
実は
のどちらかを一通り読んで練習するのがいちばんかもしれません。
>それだけで大抵のエディタよりずっと作業しやすいと思います。
まずはそこから始めてみます。
有難うございます。
vimについては極限状態を考えてみましょう。
----------------
マウスやトラックボールをポートから抜き、タッチパッドは紙で覆い、
コマンドプロンプトを出した状態で
「さあテキストファイルを読むぞ」と自分に言い聞かせます。
----------------
ファイルを開いたら、
ESCを叩いてから、ホームポジションに指を置き
黙々と右手人差し指を押し続ければ、テキストが下に流れていきます。
黙々と右手中指を押し続ければ、テキストが上に戻っていきます。
見るのに飽きたので :q で抜けましょう。
ファイルがカーソルキーもマウスもなしで読めました。
何か賢くなった気分です。
----------------
またファイルを開いたら、
ESCを叩いてから、ホームポジションに指を置き
黙々と右手薬指を押し続ければ、カーソルが右に流れていきます。
行末まで行って止まりました。
逆も当然ありだよな、と人差し指をhに伸ばします。カーソルが戻っていきました。
俺は何をしているんだろう。と空しくなってきたら :q で抜けましょう。
----------------
あまり意味がない気がしたので再度ファイルを開きましょう。
ESCを叩いてから、/ を押して
なんとなく「この単語、よく出てくるよな・・」・というものを打ってEnterを押してみます。
その単語の位置に来ました。それがどうした?
n を押してみます。次のが出ました。
また n を押したら、その次のが出ました。
シフト押しながら n を押してみます。前のに戻りました。
おお、俺はコレで検索も出来るようになったな。
と自己満足して、 :q でファイルを閉じましょう。
----------------
あとはコマンドリファレンスを見て、同じことの繰り返し。
長文有難うございます。
なんかブラインドタッチを練習していたころを思い出します。そんなつもりでやれば良いと言う事ですね。大変参考になります。
emacsについて、
やはりしっかりと勉強してからでないと、なかなか良さはわからないと思います。
お薦めの本は
あとこの辺のエントリーも読んでみてはどうでしょうか?
実はこのid:naoyaさんのエントリーをみて、「本読みたくないなー」と思ってこの質問をしていたりします。有難うございます。
とりあえずマニュアルを読み進めてみるのはどうでしょうか。
ステップアップについては、日常的に使いつづけて不便におもった点などを、マニュアルや機能紹介やショートカットの紹介を見て改善したり、便利そうだと思ったものを取り入れたりしています。
有難うございます。正攻法で行くという作戦ですかね。参考にさせていただきます。
私もemacsに移行するときwindowsユーザでしたが、その時に使った方法です。
いきなりmeadowに移行すると設定の仕方とかキーバインドがいっぺんに変わって苦痛が大きすぎたので、キーバインドから徐々に移行するようにしました。
具体的にはXKeymacsというemacsユーザ定番らしきキーバインド変更ソフトを入れます。
という風にして段階的に移行できました。
この手は後輩を洗脳して移行させる手としても使ってます。
>後輩を洗脳して移行させる手としても使ってます。
まさにこの質問ではこんな回答を募集しています!
有難うございます。参考にさせてもらいます。
http://homepage1.nifty.com/niwatori/vi/
viを仕事で使わなくなってから10年近くたちますが、まだ指が覚えています。VBをviで作業できたらどんなに楽かと思っています。
emacsの方は、チャレンジしたけれど中途半端におわり、viモードにして使っていました。
練習方法(大昔にした方法)
1)極力指を見ない、キーボードからも指をなるべく離さないよう心がける (指をキーボードから離さずに作業できるのがviの長所)
2)訳が分からない状態(たとえば、シフトロックが入っているのに気づかず下に行こうとjを押しつづける)になればESCを連打して:wで違う名前で一旦保存。 :qで終了。 心を落ち着かせてから再度チャレンジ。
3)jiklのカーソル移動を指に覚えこませる。
4)よく使うコマンドを覚える。また数字と組み合わせる (3ddなど)
i o w b 0 $ dd yy p u cwなど
5)検索や置換コマンド / :s を試す。(正規表現を覚える)
6)バッファを使う "ayy など
6) マニュアルをみて、使えるコマンドを増やし、「こんなこともできるんだ」という発見を心がける
有難うございます。
>指をキーボードから離さずに作業できるのがviの長所
これを理解するのが肝って気がしてきました。
私は以前はK2Editorってエディタ(Windows)を使ってたのですが
vimっぽいキーバインドを自分で作っているうちに覚えました。
いかにしてvimを超えるか、みたいに挑戦して
いちおうvimっぽく、でも自分なりに試行錯誤して作ってて
「これではやっぱりvimは超えられない!!」と諦めた頃に
すんなりvimに移行できた気がします。
自分でキーバインドを作ることで、楽しくマスターできました。
有難うございます。参考になります。
僕も今のEclipseにVimなりemacsなりどちらかのキーバインドを適用して覚えていくのがよいかなと思い始めてます
「どんなやり方でも良いので、何度でも入門しろ」という方法を提案します。
どちらも歴史があり、奥の深いソフトウェアなので、「どうにか使える」基本的な操作方法を身に着けるのですら、一回の挑戦でこなせるものではありません。(もちろん個人差があります)
僕の経験談になりますが、それぞれのエディタを「覚えよう」と挑戦して、何か壁にぶつかって解決できず投げ出した、という経験を、それぞれ最低10回ずつはしています。(「日本語が化ける」とか、そういうトラブルです)
初めて使ってから、 Vim のほうが一年半、 Emacs のほうは三年くらいたって、ようやく日常の仕事や趣味の際に不便なく使いこなせるレベルになりました。
体系だった学習はしてきませんでした。本を何冊か買ってちょっと読み、思い出したようにチュートリアルを数ヵ月に一度やり、困ったときだけ検索してマニュアルを眺める、など。
「最低限これだけは覚えろ」というリファレンスを丸暗記したり、チュートリアルをなんべんもやったり、オンラインマニュアルや書籍を通読したり、そういう正攻法な学習をこなせればそれが一番近道だろうとは思います。しかし、そんなにうまくいかないものです。
それに、経験を積んではじめてわかる基本の大切さ、というのもあります。僕はいまでもたまにチュートリアルをやり直したりしますが、普段使っていなかった基本的なコマンドをおさらい、というより改めて知って、目からうろこが落ちることもしばしばあります。
一度に覚えられることには限りがあります。知識の丸暗記ならまだ詰め込みがききますが、ソフトウェアの操作方法は暗記しただけでは意味がありません。身体が覚えて無意識に使えるようになるには、時間が必要です。
「すごく損をしているんじゃないか」と不安になったり、なかなか覚えられなくて焦ったりする気持ちはよくわかります。僕も数年間ずっとそういう気持ちを抱えてモヤモヤしていました。「焦ることはない」とは言いません。むしろ、焦っても構わないと思います。不安になるのはおかしいことではありません。
「今日から覚えよう」と使いはじめてみて、うまくいかなくてやめちゃってもいいと思います。やっぱり心残りで、モヤモヤした気持ちになるかもしれませんが、そしたらまた気が向いたときに「今度こそ投げ出さずにやるぞ」とチャレンジしてみたらとうでしょう。最初の一回目でファイルの開きかたを覚えていたら、二回目はそれをとばしてコピー&ペーストのやり方を覚えるのに専念できるかもしれません。
そうして繰り返して、いつか投げ出さないで使いつづけられる日が来るかもしれませんし、二度と使わなくなるのかもしれません。別に使わなくなってもいいと思います。何度かやってみて、他のソフトを使ったほうが便利だな、と身を持ってわかったからこそ、再挑戦する気にならなかった、ということでしょうし。
長くなりましたが、こういう質問をしたくなるような気持ちがある間は、ともかく勉強してみるのがいいんじゃないでしょうか。どんな勉強法よりも、好奇心のほうが重要です、こういうことに関しては。
こういう「Just do itだ!」「黙って行け!!」「トト振り返るな!」という後押しが僕には必要だった気がしてきました。
心に響きました。本当に有難うございます。
今日からさっそく始めたいと思います。
vimをメインに使っているプログラマです。
入門にはなるかどうか分かりませんが、今から20年ほど前、私がviを覚えた過程を書いてみます。参考になれば幸いです。
きっかけはunixに標準で入っていて、ちょっと覚えてみたかったから。最初はなんて使いづらいエディタなんだと思いました。まずコマンドモードと編集モードが直観的に分からない。:でexコマンドモード、/または?で検索。いきなり投げ出したくなりましたね。
しかし我慢して使うこと二週間。だいぶ操作に慣れてきたころにこのエディタの真価が見えてきたような気がしたのです。最初のうちはこの感覚を指が覚えるまで、がんばって使ってみるしかないと思います。
もちろんリファレンスは必須です。viはコマンドを覚えないと何もできません。最初のうちはマニュアルを見ながら、コマンドキーを押した時に何が起こるのか、実験しながら覚えていくといいでしょう。日本語の含まれていない、英語のドキュメントなどで練習するのがいいと思います。viの真価が発揮できますから。
コマンドはたいてい英単語に対応づけられているので、意味を思い浮かべながら使うと覚えやすいです。例えば、aはappend, dはdelete, iはinsert, uはundo, といった具合。だいたい分かってきたら、Ctrlとの組み合わせや3cwのような複数コマンドへとステップアップしていくといいかな。
コマンドがだいたい分かってきたら、:のコマンドと正規表現といった感じで進めばいいでしょう。このへんまでくれば、あとはもう慣れだけ、かな!?
私の考えるviの素晴らしさは「ホームポジションから手を動かすことなく、最小限のキー操作でテキスト編集ができる」というところに尽きますね。特にプログラミングでは重宝する機能が多いので、プログラマなら気にいる人が多いのではないかと思います。
ただ、ご存じのように大変クセのある操作系ですので、気に入る人は少数ではないかと思います。得意とするプログラムの編集機能であっても、近年のVSのようなIDEの方が使いやすいところも多いです。現に私もvimとVSを状況に応じて使い分けています。
「覚えておくと便利なこともあるよ」ぐらいに考えておくのがいいのではないでしょうか。
最後に私のおススメ本はこれ。
Learning the vi Editor (Nutshell Handbook)
長文有難うございました。ここまで回答を読んでいてemacsにしようと思っていたのがviに傾いてきました・・・
Unixユーザがviを使えないことは致命的ですが、
全ての編集をviやemacsのキーバインドで行うのはやりすぎと私は思います。
例えば客先でカスタマイズできないPCとかで通常業務がこなせなかったり、
他人のマシンの操作が出来なくなったりしそうです。
# というか、私がそうでした
GUIを入れずにUnixで色々なサーバを立てる羽目になると
viの操作方法は一通り覚える羽目になります。
>全ての編集をviやemacsのキーバインドで行うのはやりすぎと私は思います
参考になります。有難うございます。
2年前からvimユーザーです。
最初はunixを扱う際にvimを使いこなせていれば便利だろうという事と、
先輩から「vimは使いこなせるようになったら手足のように動いてくれ
るらしいよ」と言われたことから使い始めました。
私の場合は使っている最中に自分の中でステップアップを実感しました。
Java開発などではEclipseも使いますが、基本はvimでPG作業しています。
●第一段階
:Tutorial
を読むだけではなく実際にやってみた。
vimの動き方がわかった。wとeとbが超便利だと気づく。
移動と編集の基本動作を覚えて、矢印キーを封印した。
●第二段階
繰り返し機能やマクロ機能を使ってみた。
同じ事を繰り返すのは面倒なので、ピリオドで繰り返しを使うようにした。
テキスト編集などで一連の動作を繰り返しをするようなことは、マクロを使っ
て繰り返しできないか考える癖をつけた。
結果、面倒くさい事が100@aなどのマクロの繰り返しで、自分が楽になっ
たことに気づき、マクロ動作を考えるのが楽しくなった。
●第三段階
コードを書くときには、vimを使う癖をつけた。
http://www.kaoriya.net/vimdoc_j/index.html
のusr_xx.txtのヘルプを見て、便利そうな機能をちょっとづつ使うようにした。
gfに感動。
その結果ファイルを開きまくって作業するようになった。移動は単語の上で
#を押して、nで移動しまくり。ctrl-oで戻りまくり。
自由に動けるようになってたり、編集しやすくなったので指に馴染んできた
感がした。
が・・・複数ファイル間の切替に困り始めるなど、不便も感じるようになる。
●第四段階
pluginで不便を解消できると知り、tabbar.vimを入れて、バッファ間の切替
が便利になった。調子に乗って、他にも沢山のプラグインを入れまくった結果、
よく使うpluginとあまり使わないpluginがあることに気づく。
plugin関係でvimrcに設定をすることもあるので、vimrcのカスタマイズにも手を出す。
この頃、vimが自分好みの動きや結果を出してくれるようになる。
●第五段階
不便を感じ始めるよりも、もっと便利にしたいと感じはじめる。
vimにはまっていることに気づく。
たまにヘルプを見ると、使っていなかった機能を発見し取り入れる。
レジスタって便利だなとか・・・
1週間に数件はvimscriptアップデートされているので、www.vim.orgをチェックする癖がつく。
以上が、私の実体験を思い出してのステップアップ記録です。
第五段階になるまでは半年から1年くらいはかかった覚えがあります。
少しでも参考になれば、うれしく思います。
100点満点の回答です有難うございます!
すでに様々なサイトが紹介されている様なので簡単に
楽をする為に努力することを厭わないならばその扉を開けよ
これから行う操作にはもっと楽な方法があるのではないか?
という疑問を常に持ち、こんなことがしたいなぁと思ったら
ヘルプやFAQサイトを調べて見てください。
必ず今までよりも楽な方法が見つかりますよ。
例えばこんな感じ…
使用ツール:vim
状 況:ある変数がこの先のソースで使用されているかを確認したい
/[確認したい変数] で検索する?
いやいや
検索したい変数の上にカーソルを移動し *
これだけで十分です。
>楽をする為に努力することを厭わないならばその扉を開けよ
そのとおりですね、有難うございます!
Linuxの良さ、使い方が全然わからなかった頃、上司に「自分のPCにインストールしてみれば自然に覚えるよ」と言われ、自分の家にあった古いPCに自分でLinuxをインストールして使っていくうちに覚えました。
Linuxのおもしろさにハマってしまい、仕事で使うノートPCにもLinuxをインストールし、開発は基本的にviで行うようになりました。
やっぱり手元をほとんど動かさずに一通りの機能が使えるのがうれしいですね。
esc、i、:w、:q、:q!
を覚えればなんとかなります。
おまけで
h、j、k、l
を覚えればちょっとカッコイイかも。
まぁviの弊害として、キーボードから入力中に、暇になるとescをとりあえず叩くクセが付いてしまいましたがw
回答有難うございます。
>やっぱり手元をほとんど動かさずに~
この数日で、この段階までは進めたと思います。
これからも頑張ります
<キー操作の観点で>
vi/emacsはカーソルを動かすキーバインドが存在し、編集効率を高める効果があります。(他のエディタでも同様だったらすみません)(emacsだったら、Ctrl-N,Ctrl-A etc..)
上下左右のカーソルキーでカーソルを動かすのはいちいち指をホームポジションから動かさないといけないので効率が落ちると思いますが。。
<emacsの便利な点>
emacsの場合、自分でemacs-lispでマクロを組めるので文書処理やら、ネットワーク処理やら、emacs環境内で何でも好きなことができます。
文書整形はperlを使う場合が多いかもしれませんが、emacsでもlispで組めば好きに清書できます。
lispという少し癖のある言語が壁になるかもしれませんが、マクロが組めるようになると仕事の効率も高まります。
ちなみに、自分は20年近くemacs(& meadow)を使っていますが、emacs無しには仕事もままならず、生きていません。。(笑)
>自分は20年近くemacs(& meadow)を使っていますが
20年!!
重みのある貴重なご意見有難うございます!
先ほど回答したもの(chakoku)ですが、少し質問を誤解したところがありました。すみません。(再編集できないので。。)
便利に思うアピールポイントですよね。。であれば、ぜひとも編集用キーバインドを覚えてみてください。
emacsの場合、編集時のおもなキーバインドは以下です。
バッファ内移動
[ESC][<] バッファの先頭
[ESC][>] バッファの末
行単位の移動
[Ctrl]+[n] 次の行 (next line)
[Ctrl]+[p] 手前の行 (prev line)
[Ctrl]+[a] 行の先頭 (a? beg of line)
[Ctrl]+[e] 行末 (end of line)
文字単位の移動
[Ctrl]+[f] 次の文字(forward char)
[Ctrl]+[b] 前の文字(backward char)
スクロール
[Ctrl]+[v] ページスクロール(下へ)
[ESC][v] ページスクロール(上へ)
ketuname さんか紹介しておられますが、emacsの場合(も?)tutorialがありますので、それを使えばすぐに覚えられます。
ただ、[Ctrl]キーはかつて(VT100やらSunのEWS)は[A]キーの横にあった(今の[CapsLock])ので、しっくりくるのですが、今のキーボードはCtrlが左の一番下になっており、使い勝手が悪いのです。
このため、Happy Hacking Keyboard([A]の隣が[Ctrl])が売られていたり、[CapsLock]と[Ctrl]を入れ替えるソフトが出回っています。
キーバインドのルールで文書編集できるようになってもあんまりありがたみが無いなーというのであれば、エディタに望んでおられる点がvi/emacsの特性と違ってる可能性があるので、他の有名どころをいろいろ探されるのもいいかもしれません。
うおおおお、丁寧な回答有難うございます。
「バッファ」ってのがemacsの特殊なところですね・・・頑張って理解します。
さっそくCapsLk(これっていい場所にある割りに使わないですよね)をCtrlに変更しました!
Vim documentation:help
http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/
上記のサイトにhtml化された日本語ドキュメントがあります。
翻訳済みオンラインヘルプが一番下からダウンロードできますので
:helpで英語が出てくるのが嫌なら入れ替えてみてはどうですか?
vimdoc.zipを展開して出てきたファイル全部を、
Linuxなら/usr/share/vim/vim70/doc/
Windowsなら\vimのインストールディレクトリ\runtime\doc\
へ放り込んだら日本語ヘルプにできるはず。
Linuxの場合は環境によってパスが変わるかもしれませんが。
僕はhjklキーとか基本的な移動や、編集コマンドを覚えた後は
これを見たりして、少しづつ便利なものを自分に取り込んでいます。
習うより慣れろとも言いますし、
焦らずに日頃からテキストやコード書くときに
ぼちぼちと使っていけばいいと思います。
毎日使っていれば、自然と体の一部みたいになりますよ、きっと。
ある程度使えるようになってくると
カスタマイズが楽しく感じられる…気がします。
僕も使いはじめてまだ半年くらいですが、
使いこなせている気はしません。
ですが手段が目的化しては意味ないですし、
自分にあった方法でのんびりやるのが一番だと思います。
>Vim documentation:help
おー!有難うございます。
>僕も使いはじめてまだ半年くらいですが、
>使いこなせている気はしません。
僕もあせらず頑張ります。体験に基づく話を有難うございました。
vimもemacsも使います。
使用比率はvim <<< emacsです。
よくvimはエディタ、emacsは統合環境と言われますが、
簡単に例えると
vimは木、emacsは森
といった感じでしょうか。
なんかトラブルがあった時、emacsは入ってなかったり
ぶっこわれてしまってる事があってもviはまず入ってるし、
何かあった時使える可能性がより高い。
あと、emacsはデフォルトのままだと使えない
などという理由でunix系で最低限覚えといたらいいのは
viという事を聞いたので、当初自分もvimから始めました。
(この先人たちのアドバイスに関しては今でも的を得ていると思います。)
vimの洗練されたキーバインドに比べて、
emacsは指がつりそうなくらい変態的なキーバインドなんで
当初はこんなもん使うやつの気が知れんって思ってました。
ところがどっこい、emacsではエディタはもちろん、
ウェブブラウザ、ターミナル、メール、音楽、カレンダー、todo、日記、アウトライン機能、テキストのhtml化(パブリッシュ)、wiki、テキストの読み上げ、しまいにはwebサーバ機能やテキストのモールス信号化などそんなもん使うんかい!?ってなつっこみが入りそうな思い付く限りのありとあらゆる機能を実現してしまうばかりでなく各使用状況にあわせた”モード”を持っています。
やりたければvi系のキーバインドにするモードもあります。
はてなに楽々投稿できるhatena-modeだってあります(笑)
各種プログラミング用のモードもあります。
またマクロで自動的に自分好みのセッティングに一発で
切替えたり、操作をさせるという変態連携技が可能なのです!
まぁ、何言ってるのかわからない場合はとにかく極めつくせない
ほど奥が深く無限の可能性を秘めていると思っていただければ結構です。
そんなこんなでいろんなところで予言されていたように
自分も最初の思いとは裏腹に今はemacs中毒者になりました。
だからといって決してvimを否定しません!
何故なら最初に述べた理由はもちろんの事、
emacs上でもvimのキーバインドは多少なりとも
生きてくるからです。エディタだけの部分を見るなら
今でもvimの方が使いやすいと思っちゃいますね。
あとデフォルトのエディタとしてvimが設定されている
事が多いと思うので、ファイルがvimで勝手に開いたりする事があります。
まぁ、環境変数を切替えればいいんですけど、
そんな事わからない初心者にとっては、いきなりvimで開かれたら
たまったもんじゃありません。編集すらできないと思います。
(最近はnanoが開く場合もありますが。。。)
まぁ、そういった事で遠回りかもしれないですけど、
最初は先人達の言う通り素直にvimかなと思ってます。
で、余裕が出てきたらemacsにトライと。
まぁ、こんだけ書いててなんなんですけど、
windowsユーザーであれば、わざわざこういった匠の技を
目指すような苦労?する必要もないと思いますよ。
損しているかどうか。。。むむむ、そのあたりは
個々人の価値観ってなもんがあるんで、emacsに
こんな時間たくさん費して損した!指つったじゃねーか!
って嘆きアンチになる人もいれば
こんな世界があったんだぁ!うひょ〜!と喜び中毒になる人もいるわけでなんともいい難いですね。まぁ、たぶんその分岐点は
その人がどれほど到達しえたか途中で挫折したか
ってなあたりだと思うんですけどね。
いずれにせよ、ある程度の覚悟と忍耐がいると思いますよ。
そんな自分も途中で何度挫折しそうになったかわかりません。
全ていっぺんにやろうとすると爆発しそうになるから
自分が必要なものだけ、少しずつやって行くのがいいと思います。
もし挑戦されるならがんばって下さいね!
>最初は先人達の言う通り素直にvimかなと思ってます。
>で、余裕が出てきたらemacsにトライと。
重い意見ですね~
viで編集できるのは常識レベルということですね。
非常に参考になりました。有難うございます。
有難うございます。