vi をマスターする最善の方法は何ですか?[閉まっている]
-
09-06-2019 - |
質問
かなり前に読んだのですが、 viemuの作者による記事, では、vi に関する多くの誤解を解き、それがなぜ良いアイデアであるのか (そして、なぜ過去 30 年以上にわたって非常に人気があるのか) を説明します。同じ男も持っています 素晴らしいグラフィカルチートシートのセット 一度に少しずつ基本を教えます。
確信している。
実はここ2年くらいそう確信していました。しかし、私はまだ、主なエディターとして vi を強制的に学習するまでには至っていません。学習曲線が高すぎます。仕事に取り掛かると、許容範囲内ではあるが即時の生産性 (現在のエディタを使用) が、将来の驚異的な生産性 (vi を使用) よりも勝っています。
学習曲線を乗り越えるための良いヒントを持っている人はいますか?それは直接的なヒントでも、他のチュートリアルや記事でも何でも構いません。
編集:私は知っていることに注意してください vim/gVim, クリーム そして マクヴィム (など) vi の亜種。vi ファミリ全体について言及するために、vi に関する質問をそのままにしました。素晴らしい回答をありがとうございました。
アップデート (2009 年 4 月)
私は昨年 12 月から日常の仕事で Vim (正確には MacVim) を使用しています。もう戻りません:-)
Vim をマスターする皆さんの幸運を祈ります。
解決
まず第一に、Vim を手に取りたいと思うかもしれません。vi のすべての機能に加えて、非常に優れた機能セットが備わっています。
そうは言っても、学ぶには規律が必要です。仕事をしていて、(解雇されずに)生産性を下げる余裕がない場合は、エディターを学ぶことだけを目的として週末のプロジェクトに取り組むことをお勧めします。作業中はドキュメントを開いたままにして、慌てふためかないように十分に自制してください。より多くのことを学び、効率的になり、筋肉の記憶に頼るようになると、それを続けるのはそれほど難しくなくなります。
私はあまりにも長い間 Vim を使っているので、検索、移動、保存するためにどのキーを押せばよいのかさえ考えていません。そして私の手は決してキーボードから離れません。Vim を使用することは、私のプログラミング キャリアの中で最良の選択の 1 つです。
他のヒント
私が最初にやることは、矢印キーと ins/home/end/pgup/down キーの上に紙か本を置くことです。これらは Vi では必要ありません。
次に、Esc キーを押すように言われたときに Ctrl+[ を押すことに慣れます。はるかに高速で、キーボードから手を離す必要がなくなります。
それからスクリーンキャストを見ます。
http://www.youtube.com/watch?v=FcpQ7koECgk
http://www.youtube.com/watch?v=c6WCm6z5msk
http://www.youtube.com/watch?v=BPDoI7gflxM
http://www.youtube.com/watch?v=J1_CfIb-3X4
あとは練習練習練習するだけです。
編集矢印キーを避ける理由は、速度が低下するためです。Vim の最大のメリットの 1 つは、速度の速さです。また、矢印キーを使用すると、モーダルな性質を実際に受け入れることができなくなりますが、これはマスターすると非常に強力になります。
ステップ0: タッチタイピングを学びます。真剣に言うと、指がキーの場所を知らない場合、vim を使用するのは苦痛になるでしょう。そして、たとえ vim を拒否したとしても、タッチタイピングは プログラミングを改善する (聞く スティーブ・イエッグ ) リンクをスムーズに監視するように心がけることによって。があります 多く の ソフトウェア タイピングの上達に役立ちます。
ステップ1: 使用 ヴィムチューター 始めましょう。GVIM(ヘルプメニューの下)にあるか、コマンドラインで「Vimtutor」と入力することができます。それはあなたの時間の30〜45分かかります、そしてあなたの指はVI/VIMの基本を知るでしょう、そしてあなたはあなたのキーボードをウィンドウから投げ出すことなくファイルを編集することができるはずです。
ステップ2: どこでも vim を使用してください。見る この質問コマンドラインでVIMおよびVIキーバインディングを使用するためのヒントとリンクについて、Webブラウザーから、電子メールを作成するために、IDEで...VIMを使用して、筋肉の記憶に重要なバインディングを埋め込む必要があります。
ステップ 3: vim について詳しく学びましょう。Vimtutorで表面を傷つけるだけです。あなたはできる このビデオを見て または読んでください この記事 (「効果的なテキスト編集の7つの習慣」について。あなたはできる読むについてチップそしてトリック の上スタックオーバーフロー。閲覧できます vimtips. 。ライトルが私のアドバイスになることが多いことを学ぶ - そこにはたくさんのことがあり、一口サイズの塊に固執することが知識を固定するための最良の方法です。
ステップ 4: 利益 :)
私は長年にわたって vim を繰り返し使用してきました (システム管理者の仕事も時折行っています)。私は最近、プログラミング作業により多くの時間を費やし始めました。gvim から始めることをお勧めします。ほとんどの OS 環境とうまく統合されており、(さらに良いことに) 必要な場合にはマウスに戻ることができます:)。
vim を使い始めるには、 vimtutor を実行する (gVim にバンドルされています) 1 回または 2 回 (1 時間ほどかかります)。それが私にとってどれほど役に立ったかは、いくら言い過ぎてもわかりません。特に最初の部分では、ドキュメント内を移動するさまざまな方法や、編集アクションがモーション コマンドなどでどのように記録されるかについて説明します。その後、物事はより明確になるでしょう。
次に、迅速なクリップで有用な編集を行うのに十分慣れるまで、それを使用して簡単な小規模な編集 (メモ帳の代わりのもの) を開始します。そして、その中で日々の仕事をこなしてみてください。他のエディタの「最後のアクションを繰り返す」コマンドがすぐに欲しくなるでしょう。
vi テキスト エディターの学習曲線を乗り越えるのに役立つヒントを求めました。以前の回答の多くは、他のエディタを使用しないことを示唆しています。それは良いアドバイスだと思います。よりグラフィカルなエディタから vi に切り替えるには、考え方を変える必要があります。視覚的な変化ではなく、コマンドの観点から考える必要があります。
私は長年 vi だけを使ってきましたが、生産性を高める唯一の方法は、定期的に使用するコマンドを覚えることだと信じています。私がこれを行う方法は、最も一般的なキーボード コマンドの短いリストを作成することでした。これらのコマンドを機能ごとにグループ化し、色分けしました。 カーソルの移動、編集、検索, 、など。私が知らない最も一般的に使用されるコマンドのみを含めるように注意しました。目的は、利用可能なヘルプ画面を置き換えるのではなく、暗記を助けるクイックリファレンスを作成することです。次に、このリストを印刷し、モニターの後ろの壁にテープで貼り付けて、簡単に確認できるようにしました。(あなたが言及したグラフィカルなチートシートは、一部の人にとってはより効果的かもしれませんが、おそらく暗記ツールよりも優れた参照ソースです。)
ここが鍵です。 コマンドの 1 つに慣れてきたら、鉛筆で線を引きました。必要に応じてそれを見ることはできましたが、それは私にとってそのコマンドを習得したことを象徴するものでした。定期的に進歩していることが確認できたので、自信とモチベーションが得られました。ほとんどのコマンドを取り消したら、それらを削除し、あまり使用されないコマンドをいくつか追加しました。vi のコマンドに満足するまでこのプロセスを続けました。長い間コマンドを消したりリストを見たりしていなかったことに気づいたとき、自分がその地点に到達したことを知りました。
数年前、私は UNIX プラットフォームで作業する必要があり、使用できるエディタは vi だけでした。vi の小さなポケット参考書を購入しましたが、ほとんど使用しませんでした。結局、初めて vi を使用したときと同じように、リストを作成して壁に貼りました。vi を使用してから 5 年が経っていたにもかかわらず、最初の 1 週間の終わりまでに、私は非常に快適になりました。
私にとって、VI は緊急時のエディタとしては優れていますが、他に代替手段がある場合には使いたくないものです。ただし、これがすべての人に適しているわけではないことは承知しています。ひどいと言っているわけではありません。私は個人的に、見つけやすい UI を好むだけです。
しかし、Linux で何か重要なことを行う場合は、VI について本当に知っておく必要があります。
したがって、基本を学ぶだけです。i =挿入モードESC = [挿入モード]を去る:wq =保存して終了:q!=保存しないでx =挿入モードにない場合は、文字を削除します。/=検索
そうすれば、編集上の緊急事態を乗り越えることができます。これらのいくつかのコマンド (もちろんナビゲーションも) を使えば、できないことはありません。残りは必要に応じて「付け加える」ことができます。
ただし、リファレンスや書籍は手元に置いておいてください。VI を使用する必要があるときは、おそらく Web を参照することはできませんが、マニュアル ページは多少役に立つかもしれません。
無理しないでください。マスター愛への道です。
から始めるべきです ヴィム (Vi 改善)、特にその GUI - ヴィム. 。GUI にはメニューがあり、Windows ではコピー、切り取り、貼り付けのショートカットが使用できるため、メモ帳をすぐに置き換えることができます。また、メニューにはショートカット (vim コマンド) が表示されるので、多くのことを学ぶことができます。
最初から行うべきもう 1 つのことは、ニーズに合わせて vi を構成することです。たとえば、vim を次のように変換できます。 Python IDE. 。これを行うと、必要なものがすべて vi で提供されるため、別のエディタを使用する理由はなくなります。
他のすべてのテキストエディターアプリを削除します。
それからそれを学ばなければなりません。
最も簡単な方法は、 力 他のすべてのエディタをマシンから削除するだけかもしれません。誘惑を取り除きましょう:)
複雑な編集タスクを実行するたびに、より効率的な方法はないかと考え続けます。ほとんどの場合、それが簡単な言葉で説明できるもの (「テキストの段落を交換する」や「コメント行の X 文字以降をすべて削除する」など) であれば、vim で数回キーを押すだけで実行できます。
非常に便利な重要な機能がいくつかあるので、いつも使ってしまうと飽きてしまいます。私が最も気に入っているものは次のとおりです。
- ブロック選択 (Ctrl-V)
- マクロ記録(q)
- 仮想編集 (:set ve=all)
- 正規表現
- 外部 Unix プログラムへのパイプ
- キーのマッピング
- オートコンプリート (C-p、C-x C-p、C-x C-f)
- 操作+移動の組み合わせ(これがすごい威力)
他のプログラマーにどの機能が最も便利だと思うかを尋ね、あなたの脳により適した機能を採用してください。他人のアイデアを盗む .vimrc
s (ここが私のです)
編集:私が作成しました オンラインの間隔反復サイト flashcarddb.com にあるフラッシュカード セット, ご興味がございましたら...
ガイドを書きました Vim を使った効率的な編集 少し前に。役立つかもしれません。
私は少し立ち止まって、「なぜこのエディターを学びたいのか?」と自問してみます。現在使用しているテキスト エディタよりも高速または優れていると思うのはなぜですか?」 次に、Vi(m) があなたにとって不可欠なものとなる機能を学びましょう。
たとえば、Vim の CTags 統合は私にとって完全に不可欠です。私は非常に大規模なコードベースを扱っており、(どのファイルにあるかに関係なく) 1 回のキーストロークで関数またはクラス定義にジャンプできる機能は、間違いなくキラー機能であり、これなしでは作業するのに苦労します。
.vimrc ファイルを使用して、一般的なタスクを自動化するマクロを作成します。
自動操縦のエディター選択機能は、最小限の精神的労力で最も早く仕事を完了できるエディターを選択します。少し準備をすれば、エディターが Vim であることが保証されます。:-)
vi スキルを大幅に向上させる 2 つのこと:
- 練習、練習、練習
- ネスック
私のおすすめ:小さく始めてください。まずは、最も役立つコマンドの小さなセットを覚えることから始めてください。私が vi を始めたときのトップ 10 は次のとおりです。
- (Esc) コマンド モードに戻ります (最も重要です!)
- a カーソルの後にテキストを追加します
- 現在の行の末尾にテキストを追加するには A
- ×で1文字削除
- ddで1行削除
- R でテキストを置換 (上書き)
- 元に戻すには
- :q!(Enter) 保存せずに終了します
- :w (Enter) で保存します
- ZZ を保存して終了します
基本的な編集の多くは、これらのコマンドのみを使用して行うことができます。慣れてしまえば、残りはそれほど難しいものではありません。
ところで、以前は主要なテキスト エディタとして vi に依存していましたが、現在は必要な場合にのみ使用していることを付け加えておきます。私の場合、Emacs や Visual Studio などのツールを使用すると生産性が向上します (注意:"私の場合")。複数のツールを試して、生産性を最も高めるツールを選択してください。幸運を!
現在のエディタを仕事で使用しているときに使用するショートカットと機能をすべて書き留めます。それから土曜日の朝に座って、Google とスタック オーバーフローを使用して、vi でそれぞれを実行する方法を調べます。おそらくこれには 1 枚の紙を使用するのが最善です。
ここで、作業中の他のエディタを無効化または削除します。これにより、比較シートを見て vi で実行するよりも、エディタを見つけて再インストールする方が時間がかかります。あなたは選択肢がありません。
最後に、古いエディタから新しいエディタへのクロスオーバー ショートカットのリストをブログで公開します。
幸運を!
使用しないでください X11?
$ sudu rm /usr/local/bin/emacs
ログインシェルを次のように変更します。 ヴィ?
まず、自分に強制的に使用してください 編, 、 それから ヴィ 贅沢に見えるでしょうか?
使用 ヴィ キーバインディング バッシュ?
使い始めるだけ ヴィ いつも?
エディターを学ぶことは言語を学ぶこととそれほど変わらないように私には思えます。浸漬が最も効果的です。
私が使う ヴィ 本当に素早い編集の場合、または使用できない場合 X11 どういうわけか、私はここに住んでいますが、 emacs. 。本当に強力なエディターは、時間をかけて学ぶ価値があります。
私がお勧めするのは、いくつかの簡単なプログラムを考え出し、最初から最後まで VI を使用して作成することです。
おそらく、最初は学習曲線にあまりにもイライラして、仕事や時間に敏感な環境で無理にそれらを使用することはできないでしょう。
私は環境やエディタに慣れるためにこれを以前に行ったことがありますが、非常にうまく機能します。
書く内容が思いつかない場合は、学校でやったプロジェクト (または以前にやったことのあるもの) をやり直すことをお勧めします。この方法には、自分がどれだけ優れた開発者になったかを確認できるという追加のボーナスもあります。:)
編集:マウスを使用する誘惑を避けるために、この作業はすべてコンソールから行う必要があることを忘れていました。
私が最初に emacs を学び始めたときのことを覚えています。それは私がすでに Vim にとても慣れてからでした。私もあなたと同じか似たような状況にあり、別のエディターで多くのことを行う方法を知っていました。 emacs を使用すると、いつも痛ましいほど遅かったです。
ただし、あなたがしなければならないことは、ほんの少しの苦痛を吸収することと、常に、常に、常に、自分がやりたいことを行うために必ずドキュメントを参照することだと思います。 知る 行末への移動やテキスト領域の選択などは、以前のエディターで行うことができます。
また、質問できる地元の vi 専門家がいる場合や、当社のようにペア プログラミングを推進している場合も役立ちます。そうすれば、簡単なはずのことをやろうとしているときに、誰かに尋ねるだけで、その方法を教えてくれます。また、エディタを数週間定期的に使用している場合は、それ以上尋ねる必要はありません。それからそれが習慣になるまで数回。
地元のリソースがない場合でも、オンラインには書籍、チュートリアル、リファレンス シートがたくさんあり、ほとんどの質問に答えることができます。
結局のところ、Vi を学ぶことは他のスキルを学ぶことと同じであり、特効薬はなく、しばらくの間は現在のエディターよりも生産性が低下することを受け入れる必要があります。「他の人たちは Vi を学ぶことができている、そして私は少なくとも彼らと同じくらい賢い」と自分に言い聞かせてください (とにかく私が自分に言い聞かせていることです :))
私が使用する主な理由は、 vi
は ssh
(Windows の場合は Putty):Unix サーバーにリモートでログインしている場合、 vi
いつでも利用可能です。また、カーソル キーもバックスペース/削除キーもマップされていない場合は、VT100 で動作します。
みたいな本もあります VI エディタのポケット リファレンス 大いに役立ちます。
gVIM には非常に優れたチュートリアルがあります ([スタート] メニュー グループ内のリンク)。
これをやり遂げることで、最初の学習のつまずきを乗り越えることができることがわかりました。その後、Visual Studio を ViEMU に切り替えたことで、VI スキルを磨くことができました。
また、スクリーンキャストは次のとおりです。 http://vimcasts.org/ 素晴らしいです!
オリジナルの Happy Hacker キーボード (矢印キーなし) を手に入れて、編集を開始するたびに (ワイヤレス) マウスを手の届かない場所に置くことができます。
コマンドやショートカットの膨大なリストを書き出すのは簡単ですが、練習せずにすべてを覚えるのは困難です。
一度に 1 つの新しいコマンドに集中してください。それが自動的に行われるようになったら、たとえば 1 ~ 2 週間使用した後、別のレパートリーに加えてください。
短期的に特定のことを達成するには遠回りをすることになりますが、これは新しい近道を学ぶための明らかな機会です。
私の経験では、一度に多くのことを引き受けないようにすると楽になりました。
私の一番の提案:キーボードを見ずに素早く入力できるようになります。
タッチタイプができず、いつもコロンや hjkl や :%s/foo/bar を探し回っているのなら、そんなことは忘れてください。タイピング できる マウスを使用するよりも高速ですが、そうでない場合は、vi は動作しません。
ただし、優れたタイピングスキル、SSH、および 画面 そして vi は自然になります。
それがすぐにパフォーマンスに影響を与えるという事実に直面してください。新しいツールを学習するときは、問題があなた自身の問題ではないように、他のツールで行う方法を知っていることを実行できるようにする必要があります。新しいツールをしばらく使用すると、ツールは表示されなくなり、根本的な問題のみに焦点を当てることができます。
vim のようなものでは (他の人も言っているように、vim は vi よりもはるかに優れています)、ドキュメントを定期的に読み返して参照することが重要です。これがなければインターフェイスはまったく検出できません。新しい本を読むたびに、ある特徴を見て、「ああ、そうすれば、先週理解しようとしていたこの問題は解決するはずだ」と言って、それを脳内にファイルしてしまいます。あなたが経験した現実世界の問題に関連した解決策は、ランダムなショートカットよりもはるかに覚えやすいです。
最終的には、vim の機能のかなり小さなサブセットを使用して vim を使用できるので、追加機能のすべてに圧倒されないようにしてください。Word のすべての機能について考えてみましょう。99% の人がそれらを使用しているでしょうか?
ESC gg=G
コードを再インデントし、 :retab
タブをスペースに変換したり、スペースをタブに変換したりすることが、私を vim に夢中にしたきっかけでした。したがって、実際にはそれを強制的に使用する必要はなく、速度を上げるのにどのような場合にそれが役立つかを学ぶ必要があります。
通り抜ける vimtutor
.
構成ファイルや HTML などの単純な編集には vim の使用を開始します。必要に応じてコマンドを学習してください。
あなたと似たツールチェーンを使用している人が使用している適切な .vimrc を Google で検索してください。構文の強調表示をオンにします。素敵な配色を見つけてください。
Vim は、いくつかの単語を複雑な XML タグにフォーマットしたり、CSV を HTML テーブルに変換したりするなど、自動化されたタスクやスニペットの挿入に最適であるため、マクロを学習します。
まずはクリームから始めてみるといいかもしれません。Cream は自分自身を vim の「最新の構成」だと説明しています。基本的に、これは vim の特別なバージョンであり、実用的な目的であれば他のテキスト エディターと同じように見えます。ただし、「エキスパート モード」を有効にすると、vim のすべての機能と動作が利用できるようになります。
そのため、Cream を通常のテキスト エディターとして使い始め、十分に慣れてから vim に完全に切り替えるまで「エキスパート モード」を試してみることができます。
インストール gVim
使用するすべてのプラットフォームで。
次に、vimtutor を実行します (:help vimtutor
または vimtutor
コマンドラインで)。
次の講義を視聴し、そのアドバイスに従ってください。 効果的なテキスト編集のための 7 つの習慣 2.0
すべての編集にぜひ使い始めていただきたいと思います。生産性の低下が心配な場合は、週末を使ってしっかりと練習してください (私はかつて、qwerty から dvorak に切り替えるためにこれを実行し、月曜日までに生産性が十分に高くなり、その後もなんとか使い続けることができました)。
努力する価値はあるし、もう振り返ることはないでしょう!
個人的に私がしなければならなかったのは、いくつかのアプリケーションで Vim のキー バインドを (少なくとも、十分に近い) 使用できるようにすることでした。エディターを変更するたびにテキストの編集方法を完全に切り替える必要があるため、Vim の編集スタイルを筋肉の記憶に定着させるのは非常に困難でした。
私の場合は、Viemu + vimperator でうまくいきました。