最も使用されるvimコマンド/キープレスは何ですか?


112

私は、TextmateからMacVimに切り替えようとしているRubyプログラミングです。VIMで実行できる操作とそれらのすべてのキープレスの膨大なリストをたどっていくのに苦労しています。「Iを使用してテキストを挿入したり、aを文字の後にテキストを追加したり、Aを使用して行末にテキストを追加したり、または…」と聞いたりするのにうんざりしません。誰もが20のキープレスすべてを使用してテキストをナビゲートし、10個程度のキーを使用してテキストの追加を開始し、18の方法で内部ブロックを視覚的に選択します。それとも!?

私の理想のチートシートは、誰もが日常的にコードを記述するために最も頻繁に使用する30〜40のキープレスまたはコマンドと、ルビイストが毎日使用する絶対不可欠なプラグインと、それらに使用される10のコマンドです。理論的には、それを手に入れて、Textmateと同じようにVIMに習熟すると、より効率的な他の何千ものVIMコマンドを習得できるようになります。

または、VIMをまったく間違った方法で学習していますか?



1
「ルビー」を削除して「キーボードショートカット」を追加するためにタグを付け直しました。より適切なようです。

「私はVimを間違った方法で学んでいますか?」-いや、あなたはいくつかの基本から始める必要があります、そしてあなたはまだ1年後もより多くのコマンドを学ぶつもりであることを覚えておいてください。多分いつかあなたは本当にすべてのコマンドを使うでしょう!しかし、誰もが最初からそれらすべてを使用することはありません。
Cascabel 2011年

回答:


306

これは、私が実際に定期的に使用するコマンドを含めて、私が一度書いたヒントシートです。

参考文献

一般的な

  • ほぼすべてのコマンドの前に、繰り返しカウントの番号を付けることができます。例えば。5dd 5行削除
  • <Esc> 任意のモードを終了してコマンドモードに戻る
  • が前に付いているコマンドは、画面下部のコマンドラインで実行されます。
  • :help任意のコマンドのヘルプ

ナビゲーション

  • カーソル移動:← hjk l→
  • 言葉で:
    • w次の単語(句読点による); W次の単語(スペース)
    • bバックワード(句読点による); Bバックワード(スペースによる)
    • e終了語(句読点による); E末尾の単語(スペース)
  • 行で:
    • 0行頭; ^最初の非空白文字
    • $行末
  • 段落ごと:
    • {前の空白行; }次の空白行
  • ファイルごと:
    • ggファイルの開始。Gファイルの終わり
    • 123Gは特定の行番号に移動します
  • マーカーで:
    • mxセットマークx ; 「Xマークに行くX
    • '。最後の編集の位置に移動
    • ''ジャンプする前に最後のポイントに戻る
  • スクロール:
    • ^ F全画面転送。^ B後方全画面
    • ^ D画面半分下; ^ U上半分の画面
    • ^ E 1行上にスクロールします。^ Y 1行下にスクロール
    • zz中央カーソル線

編集

  • uが元に戻します。^ Rやり直す
  • 最後の編集コマンドを繰り返す

挿入

すべての挿入コマンドは<Esc>、コマンドモードに戻るために終了します。

  • 私は、カーソルの位置にテキストを挿入します。行頭にテキスト挿入
  • カーソルの後にテキストを追加します。ライン終了後のテキストを追加します。
  • o以下の新しい行を開きます。O上記の新しい行を開く

変化

  • r単一の文字を置き換えます。R複数の文字を置き換える
  • s単一の文字を変更
  • cw単語を変更します。Cは行末に変わります。cc行全体を変更
  • c<motion>は、動きの方向にテキストを変更します
  • ci(括弧内で変更(その他の例については、テキストオブジェクトの選択を参照)

削除しています

  • x文字を削除
  • dw単語を削除します。D行末まで削除。DD行全体を削除します
  • d<motion>モーションの方向に削除します

カット&ペースト

  • yy行を貼り付けバッファにコピーします。行を貼り付けバッファーにddカット
  • pカーソル行の下にバッファを貼り付けます。Pカーソル線の上にバッファを貼り付け
  • xpは 2文字を入れ替えます(xは1文字を削除し、次にpはカーソル位置の後に戻します)。

ブロック

  • vビジュアルブロックストリーム。V視覚ブロック線; ^ Vビジュアルブロック列
    • ほとんどのモーションコマンドは、ブロックを新しいカーソル位置まで拡張します
    • oカーソルをブロックのもう一方の端に移動します
  • dまたはxカットブロックを貼り付けバッファーに
  • yブロックを貼り付けバッファーにコピー
  • >インデントブロック; <インデント解除ブロック
  • gv最後のビジュアルブロックを再選択

グローバル

  • :%s / foo / bar / g は、「foo」のすべての出現箇所を「bar」に置き換えます
    • %は、ファイルのすべての行を示す範囲です
    • / gは、最初の行だけでなく、行のすべての出現箇所を変更するフラグです

検索中

  • /前方検索; 後方検索
  • *カーソルの下の単語を前方に検索します。カーソル下の単語を後方検索
  • n次に同じ方向に一致します。N次に反対方向に一致
  • fx次の文字xに進む。前の文字xに逆方向にFx
  • ; 同じ方向に同じキャラクターに再び移動します。反対方向に同じキャラクターに再び移動

ファイル

  • :wファイルをディスクに書き込む
  • :wnameファイルをディスクに書き込むname
  • ZZはファイルをディスクに書き込んで終了します
  • :n新しいファイルを編集します。:n!現在の変更を保存せずに新しいファイルを編集する
  • :qファイルの編集を終了します。:q!変更を保存せずに編集を終了する
  • :e同じファイルをもう一度編集します(vim外で変更された場合)
  • :e。ディレクトリエクスプローラ

ウィンドウズ

  • ^ Wn新しいウィンドウ
  • ^ Wjで次のウィンドウに移動。^前のウィンドウに戻る
  • ^ W_現在のウィンドウを最大化します。^ W =すべてのウィンドウを同じサイズにする
  • ^ W +ウィンドウサイズを大きくします。^ W-ウィンドウサイズを小さくする

ソースナビゲーション

  • 対応する括弧/大括弧/大括弧、または言語モジュールがロードされている場合は言語ブロックにジャンプ
  • gdカーソルの下のローカルシンボルの定義に移動します。^ O前の位置に戻る
  • ^]グローバルシンボルの定義にジャンプします(tagsファイルが必要です)。^ T前の位置に戻る(位置の任意のスタックが維持されます)
  • ^ N(挿入モード)自動単語補完

ローカル変更を表示

Vimには、ソース管理の基本バージョンから変更された行を簡単に強調表示する機能がいくつかあります。これを簡単にする小さなvimスクリプトを作成しました:http : //github.com/ghewgill/vim-scmdiff


1
+1比較的最小限ですが、ウィンドウコマンドを使用したり、矢印キー/ pageup / pagedown / home / end、およびgg / G以外の方法で移動したりすることはできません。ああ、行番号のナビゲーションには、:123(コマンドモード)も使用できます。

2
いいチートシート。ウィンドウを循環する^ w ^ wを追加します。一貫性を保つためにZZではなく:xを追加し、txを文字の前に転送し、Txを逆にします。
romainl 2011年

これは私が使用するものの基本にすぎないことに注意してください。他の人にvimを教えるためのツールとしてこのリストを作成しました。他の多くのコマンドをあまり頻繁に使用せず、vimをより効果的に使用できるようにさまざまなエイリアスとマクロを設定しています。
グレッグヒューギル

2
あなたは回避したい場合はEsc、キー(とRSIを?)は、使用することができます^[^c動作します(ただし、省略形は拡張されません)。出典:vim.wikia.com/wiki/Avoid_the_escape_key
Lian

22

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

これはVIMを学ぶ上でこれまでで最高のものです。


私はこれまでこれまで見たことがありません。コマンドが何をするかを知った後のための非常にクールなリファレンスです。
amccormack

3
ただし、qwertyキーボードがない場合、「グラフィカル」部分は役に立ちません。
romainl 2011年

5
リンクを投稿する(既に投稿されている)ことは、他のポスターが追加された1マイルを移動する間、これだけの注目を集めていることに
驚かされ



4

Vimの組み込みチュートリアルを実行しましたか?そうでない場合は、コマンドラインにドロップしてと入力しvimtutorます。これは、初期コマンドを学ぶのに最適な方法です。

Vimには驚くほどの柔軟性とパワーがあり、ほとんどのvimユーザーのようであれば、多くの新しいコマンドを学び、古いコマンドを忘れて、それらを再学習します。組み込みのヘルプは、新しいものを学ぶために定期的に閲覧するのに適しています。

インターネットには、vim向けの優れたFAQとチートシートがいくつかあります。とを検索することvim + faqをお勧めしvim + cheatsheetます。Cheat-Sheets.org#vimは良い情報源であり、Vim Tips wikiもそうです。


私はそのことを知ったばかりで、ありがたいことにMacにインストールされています。今すぐ試す(午前1時…)
クリントン

私は長い間vimを使用してきましたが、これはマシンに最初にインストールするものの1つです。MacVimは、Mac OSでは非常に優れています。私が使用するほとんどのLinuxボックスでは、vimをソースからコンパイルする傾向があります。これは、ほとんどのディストリビューションが最新ではない、または言語サポートが正しく設定されていないためです。私は現在のバージョンの~/.vimrc~/.gvimrcおよび~/.vim何かを設定する必要があるときに備えてtar-ballにディレクトリを保持しています。それをコピーしてファイルを抽出すると、Windows、Mac、Linuxで通常のコマンドとカラースキームをすべて使用してvimを数分で実行できます。
ティンマン

3

どのようなほとんどの人がやっていることは多分同じように、裸の基礎から始めているiywyy、とp。引き続き矢印キーを使用して移動したり、マウスを使用してテキストを選択したり、メニューを使用したりできます。次に、何かがあなたを遅くしているとき、それを行うためのより速い方法を調べ、徐々にコマンドを追加します。しばらくの間、1日あたり1つの新しいコマンドを学習する場合がありますが、その後は1週間に1つになります。1か月でかなり生産的になります。1年後はかなりしっかりとしたレパートリーができ、2〜3年後は指が何を入力しているのか意識することさえなくなり、誰かのためにそれを綴る必要がある場合は奇妙に見えます。私は1993年にviを学びましたが、それでも年に2、3個の新しいコマンドを習得しています。


3

@グレッグ・ヒューギルのチートシートはとても良いです。数か月前にTextMateからの切り替えを開始しました。今では、TMと同じくらい生産性が高く、常にVimのパワーに驚かされています。

これが私が切り替え方法です。多分それはあなたに役立つことができます。

Grosso modo、急進的な切り替えを行うのは良い考えではないと思います。Vimは非常に異なり、段階的に進むのが最善です。

そして、あなたのサブ質問に答えるために、はい、私はiaIAoO毎日のすべてを使用して挿入モードに入ります。確かに最初は奇妙に思われるかもしれませんが、しばらくしてから考えることはありません。

プログラミング関連のタスクに非常に役立ついくつかのコマンド:

  • rそして、R文字を置換するには
  • <C-a>そして、<C-x>数字を増減します
  • citHTMLタグの内容、およびその変種(変更するにはcatditdatci(、など)
  • <C-x><C-o>(にマップされます,,)全方向性
  • 視覚ブロック選択 <C-v>
  • 等々…

Vimの方法に慣れると、他のエディタやテキストフィールドでテキストを編集するときに、ヒットしoたり、x常にヒットしたりすることが難しくなります。


2

誰もが20種類のキープレスすべてを使用してテキストをナビゲートし、10個程度のキーを使用してテキストの追加を開始し、18の方法で内部ブロックを視覚的に選択するとは想像できません。それとも!?

私がやります。

理論的には、それを手に入れ、Textmateと同じようにVIMに習熟し始めたら、他の何千ものVIMコマンドを学び始めて、より効率的になります。

それが正しい方法です。基本的なコマンドから始めて、生産性を向上させるものを選びます。vimで生産性を向上させる方法のヒントについては、このブログをフォローするのが好きです。


2

tuxfiles.orgはかなり良いチートシートを持っています。コマンドを学ぶにはいくつかのポイントがあると思います:

  • チートシートを定期的に読んでください。それらのすべてを使用したり、すべてのキーを思い出したりする必要はありません。コマンドが存在することを確認してください。コマンドを調べて、自分が何か反復していることに気付いたらそれを使用します。
  • 自分が定期的に何かをしている(特定の文字の後にある行全体を削除するなどd$)場合は、グーグル検索を行って、そのコマンドが見つかるかどうかを確認してください。
  • 役立つと思われるコマンドを書き留め、コードを記述している間、そのリストが表示される場所に保管してください。私は何かを印刷しないように主張しますが、代わりに、一度にいくつかのコマンドに対してのみポストイットノートを使用することをお勧めします。
  • 可能であれば、他のプログラマがvimを使用しているのを見て、面白いことをしているのを見ながら、どのコマンドを使用しているかを尋ねます。

これらのヒントに加えて、理解しておくべきいくつかの基本的な概念があります。

  • vimは同じ関数を表すために同じ文字を使用します。たとえば、文字の後の行を削除するには、を使用しますd$。特定の文字の後の行を強調表示するには、を使用しますv$。したがって$、カーソルが現在ある場所から行の終わりまで何かを行うことを示していることに注意してください。
  • u取り消し、ctrl+rやり直しです。
  • コマンドの前に数字を置くと、繰り返し実行されます。3ddカーソルがある行とそれに続く2行を削除します。同様3yyに、カーソルがある行とそれに続く2行をコピーします。
  • バッファが使用をナビゲートする方法を理解する:lsバッファを一覧表示し、かつ:bn:bpそれらを介して循環します。
  • :help これにあるチュートリアルを読んでくださいこれはおそらく「ロープを学ぶ」ための最良の方法であり、残りのコマンドは使用法を通して学びます。

2

これを.bashrcに入れて、最後に編集したファイルを最後に編集した行でvimを開きます

alias vil="vim  +\"'\"0"

1

vimを使用した効率的な編集に移動し、始めるために必要なものを学びます。そのページのすべてが最初から必須であるわけではないので、チェリーはあなたが欲しいものを選びます。

そこから、すべてにvimを使用します。「hjkl」、「y」、および「p」は、たとえそれが最も効率的な方法でなくても、長い道のりを手に入れます。マジックキーを効率的に(またはまったく)実行するための魔法の鍵がわからないタスクに遭遇し、自分が数回以上それを実行していることに気付いた場合は、調べてください。少しずつ第二の性質になります。

vimは何ヶ月も前に気が遠くなることを発見しました(最後に "m"がなかったとき)、効率を上げるには約1週間の安定した使用だけで済みました。私はまだそれが物事を成し遂げるための最も速いエディターを見つけます。


「vimを使った効率的な編集」へのリンクは現在廃止されています。代替案はrobertames.com/files/vim-editing.html
Damian Powell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.