VIM超高速ナビゲーション


91

他のエディタを使用することについて私が見逃している唯一のことは、マウスで自分の場所を見つけることです。私は目でファイルの特定の領域を見ることができ、そこにいるマウスのクリックとクリックでそれを見ることができます。VIMを使うと、jjjjjkkkkkkjjjjhhhh ...ほんとそこにあるhhhhhおおがらくた3文字逃したlll。

私はマークを習得していて、ブックマークプラグインを見つけました。マーカーを作成して破棄し<f3>、ナビゲートしてファイルを閉じることができます。ファイルを閉じるとマークが忘れられます。

すべてのファイルをどのようにスーパーナビゲートしますか?5j7k4j5hなども実行できることはわかっていますが、目を読んでカーソルを本当に必要な場所に置くことができるプラグインが必要です。

/%を使用して特定の用語を検索する方法も学びました。役立ちますが、一致するすべての文字がドキュメント全体で強調表示されます。


素晴らしい答えすべて、私たちはまだテーマについている間、私はnG(行番号に移動)などの何かを試すことができると思いましたf%(探しているものの最初の文字を見つけるか、誰かがwを使用して前進する次の単語へ
ヘルムートグランダ

回答:


172

試してみてください$ vimtutor、それはあなたが始めるために知る必要があるすべてを教えてくれます。

hjkl 氷山の頂上の先端であり、少なくとも私の場合はほとんど使用されていません。

wWEeそして、BbgegEすべて単語ごとに移動することができます:

  • wそして、e前方に行く、WE考慮に空白や句読点を取ります

    " here the * marks the default location of the cursor
    " and each letter shows where you jump when you hit the key.
    
    Latin: Lorem ipsum dolor sit amet.
                       *   e   e    e
                       *   E   E     E
    *    w w     w     w     w   w   w
    *      W     W     W     W   W   W
    
  • bそしてge、後方に行く、BgE考慮に空白や句読点を取ります

    Latin: Lorem ipsum dolor sit amet.
    b    b b     b     *
    B      B     B     *
         ge    ge    ge*
        ge
         gE    gE    gE*
    

fFtT特定の文字のために到達するために使用されている現在のライン上;,で同じ方向に、その運動を繰り返すために使用されている;とのための反対方向に,

  • fm次のm順方向にジャンプし、F逆方向に移動します

    Latin: Lorem ipsum dolor sit amet.
    *          fm    ;            ;
               ;     Fm          *
    
  • tm次のm前進の前にジャンプし、T後退します

    Latin: Lorem ipsum dolor sit amet.
    *         tm    ;            ;
              ;     Tm           *
    

/? 現在のカーソル位置から最初に出現するパターンにジャンプするために使用されます。

  • /pattern 進む

    Latin: Lorem ipsum dolor sit amet.
    *            /ips
    
  • ?pattern 後退する

    Latin: Lorem ipsum dolor sit amet.
    ?Lat             *
    

0$ 行の最初と最後の文字にジャンプするために使用されます。

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
    0                  *                                     $

^g_ 行の最初と最後の印刷可能な文字にジャンプするために使用されます。

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
                ^      *                         g_

シングルおよびコンビネーション()[]{}は、フレーズごと、段落ごと、またはコードブロックごとに移動するために使用されます。

<C-b>そして<C-f>前後の画面でスクロールするために使用されています。

<C-u>そして<C-d>前後に半画面でスクロールするために使用されています。

HMおよびLそれぞれ、ビューポートの上部、中央、下部にカーソルを移動させます。

ztzzおよびzbそれぞれ、ビューポートの上部、中央、下部にカーソルの下の行を移動します。

等々。

:help motion.txt あなたの心を爆破します。


17
私は通常これを行いませんが、このコメントはこれが素晴らしい答えであることを伝えるためだけのものです!
ジョジョ2016

なんらかの理由で、これまでにH、M、Lを使用したことがなかったので、すばらしいヒントを紹介しました。
クリス

その添加]}[{末尾に(2つのキーストローク)ジャンプまたは(スコープの開始によって定義例えば、1{ ... }
マシュー・ウー

3
さて、これはまだのOPの質問には実際には答えませんhow to jump to a line he's seeing like using a mouse。私はいつもあなたが言及したすべてのキーバインディングを知っていて使用しています。しかし、大きな距離をジャンプするときにマウスをポイントするほど効率的ではありません。
Penghe Geng

ええH、M、Lは簡単に入れ替えることができます:高、中、低;)@Chris
nils petersohn

25

vimのモーションコマンドの他に、EasyMotionという名前のvimプラグインはナビゲートに非常に便利です。vimperatorまたはpentadactylに慣れている場合、EasyMotionはヒントモードをvimに戻すだけです。これはアニメーション化されたデモあり、これはビデオチュートリアルです。お役に立てば幸いです。


easymotionの利点は、わずか3回のキーストロークで画面のどこにでも移動できることです。
ザビエルT.

+1:EasyMotionは、実際にはVimの動きのジェットパックです。(ちなみに、PreciseJumpも。EasyMotionはPreciseJumpの息子です)
Dmitry Frank

2
EasyMotionの作者がデモでこの素晴らしいステータスラインをどのように取得したのですか?
キリル2012年

1
「超素晴らしいステータスライン」は「パワーライン」と呼ばれるプラグインです。ここにあります:vim.org/scripts/script.php
script_id

アニメーションのデモURLを更新していただけませんか?それはもう機能していません
brauliobo 2014年

20

vim内を移動する方法は無数にありますが、これは非常に強力な領域の1つです。私は、たくさん使っ{}、その方向に次の空白行に上下に移動します。%(任意の種類の)対応するブラケットに前後に移動するのに便利です。WそしてB「言葉」で前後に移動します。

Vimマニュアルの「移動」セクションを確認することは価値があります。


4
おそらく言及する価値があるのは、それぞれCtl + UとCtl + Dを使用したページングのアップとダウンです。
Nick

10

vimはマウスをサポートしています!これを試してください(.vimrcで):

set mouse=a

傍注:画面ユーザーとして、私も必要なことがわかりました

set ttymouse=xterm2

これが機能するために。


4
知っておくと便利ですが、マウスを使わずに、完璧なクイックナビゲーションを引き続き探します。
Helmut Granda 2012年

9

個人的に私は使いたい:

"/<chars><enter>" to quickly move to somewhere   ( extremely fast! trust me! )
":<number>" to go to some line, 
"ctrl + f/b" to forward/back
"g;" to move to the last editing place.
"w/b" to move by word
"jklh" to move your cursor to the exact position

5

オプションrelativenumber:help relativenumber-Vim 7.3に含まれる)を使用すると、a [count]kまたは[count]j動きで目の下の行に移動ftwebできます。これにより、@ romainlで説明されているような動きで現在の行に移動できます。


素晴らしいオプション。easymotionよりも高速です。
Penghe Geng

5

別に{}()<number>cb<number>cB<number>cW%、私はそのようなナビゲーション技術を使用します。

  • ciwdiwciWdiW)。カーソルの下の単語(スペース以外の文字を含む)をすばやく編集/削除するなど
  • ci(ci"ca(ca")などを使用すると、括弧、引用符(括弧、引用符を含む)の内部をすばやく編集できます。同じことがに当てはまりますd
  • 大文字でマークすると、グローバルに(ファイル全体で)、永続的に(バッファーが閉じているときに)設定されます。たとえば、コマンドで(または列を考慮して)使用できるmAグローバルマークAを作成します。'A`A
  • gf カーソルの下のファイルにすばやく移動するには
  • ftFT)は、charの右(左)の前のcharに移動します(;繰り返しに使用)。これらは特にdand cコマンドに役立ちます(.繰り返しに使用)。
  • ^]タグ^Tに移動して戻る。

そして、移動する他の多くの方法:)

詳細については、こちらをご覧ください:http : //www.thegeekstuff.com/2009/03/8-essential-vim-editor-navigation-fundamentals/

PS Railsユーザーには、非常に便利なrails-vimプラグインがあります。これもチェックしてみてください。


3

これはメインのナビゲーションコマンドを学ぶのに適した場所です。vimのパワー/速度の一部は、動きとアクションの組み合わせから得られます。つまりcwd10j-> 単語の変更、-> 10行下の削除などです。また、これこれは興味深い読み物です。


2

:set nohlsearch検索文字のハイライトをオフにすることができます。

私もctagsを使ってナビゲートします。


github.com/richoH/dotfiles/blob/master/vimrc そこに他の便利なものがあるかもしれません。
richo 2012年

ヒントをありがとう、vimrcを調べていたところ、メールまたはドキュメントを書くときに80文字に達したときに行を強調表示するように設定したメモが見つかりました。なぜVIMでメールを書くのですか?個人的に使用するドキュメントは理解できますが、メールについてはわかりません。
Helmut Granda 2012年

私はmutt + vimを使用して、メールの大部分を読み書きしています。また、vimで多くのWebコンテンツを作成するために、すべてのテキストプラグインを使用しています。メールのワードラップをオンにしていますが、リンクなどについては、フォーマットが正しくない場合や、ネストされた引用符が長くなりすぎている場合にリマインダーを設定すると便利です。
richo

0

超高速ナビゲーションを念頭に置いて、ムーブレスと呼ばれるプラグインを作成しました。

https://github.com/anschnapp/move-less

h j k l-keys)でスクロールして、穴ファイルを快適に検索できます。(折りたたみのトリックに基づいて)穴のサイトをスクロールしている間は、カーソルの位置を変更しません。検索を中止した場合は、開始した場所から開始します。

超高速ナビゲーションの目的は、プラグインを使用して画面上のターゲット位置を取得し、easymotionを介して正しい位置にジャンプすることです(既に別の回答で推奨されています)。

https://github.com/easymotion/vim-easymotion

両方を組み合わせると、ジャンプ履歴を先に進めることもでき、単純に<c-o>およびを介して、出発地と目的地の間をジャンプできます<c-i>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.