1. ホーム
  2. vim

[解決済み] 最もよく使われるvimのコマンド/キープレスは何ですか?

2022-07-12 08:51:49

質問

私は Ruby プログラミングで Textmate から MacVim に乗り換えようとしているのですが、VIM でできることの膨大なリストと、そのためのすべてのキー押しを読みこなすのに苦労しています。テキストを挿入するには「I」、文字の後にテキストを追加するには「a」、行末にテキストを追加するには「A」、..."を聞くのに疲れました。テキストを移動するのに20種類のキープレス、テキストの追加を始めるのに10種類ほどのキー、内側のブロックを視覚的に選択する18通りの方法すべてをみんなが使っているとは思えません。それとも、そうなのでしょうか!

私の理想的なチートシートは、誰もが日常的にコードを書くために使用する 30-40 の最も使用されるキープレスまたはコマンド、および rubyist が毎日使用する絶対必須のプラグインとそれらについて最も使用される 10 のコマンドです。理論的には、いったんそれができて、Textmateと同じくらいVIMに熟達し始めたら。 では を作る何千もの他の VIM コマンドを学び始めることができます。 より 効率的になります。

それとも、私は VIM の学習方法を完全に間違えているのでしょうか?

どのように解決するのですか?

以前、私が書いたTipsシートです。私が実際によく使うコマンドを載せています。

リファレンス

一般的な

  • ほぼすべてのコマンドの前に、繰り返し回数を示す数字を付けることができます。 5dd 5行削除
  • <Esc> どのモードからも抜け出し、コマンドモードに戻ります。
  • で始まるコマンドは : は画面下部のコマンドラインで実行される
  • :ヘルプ 任意のコマンドのヘルプ

ナビゲーション

  • カーソルの移動 ← h j k 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> で終了し、コマンドモードに戻ります。

  • i カーソル位置にテキストを挿入する。 I 行頭にテキストを挿入
  • a カーソルの後にテキストを追加する。 A 行末の後にテキストを追加する
  • o は下の行を開いてください。 O 上の改行を開く

変更

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

削除する

  • x delete char
  • 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 は、最初の 1 行だけでなく、その行のすべての出現箇所を変更するフラグです。

検索

  • / を前方に検索します。 ? 後方検索
  • * カーソル位置の単語を前方検索します。 # カーソル位置の単語を後方へ検索
  • n 同じ方向で次のマッチを行う。 N 次のマッチが逆方向の場合
  • fx 次の文字に進む x ; Fx 前の文字に戻る x
  • ; 同じ方向で同じ文字に再度移動する。 , 同じ文字に反対方向に移動する

ファイル

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

Windows

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

ソース ナビゲーション

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

ローカルの変更を表示

Vim には、ソースコントロールのベースバージョンから変更された行を簡単にハイライトする機能があります。私はこれを簡単にする小さな vim スクリプトを作成しました。 http://github.com/ghewgill/vim-scmdiff