2011-02-06 26 views
47

vi/vimの相対的な行数をカーソルに移動する方法はありますか?削除したいコードブロックの下に10行のカーソルがあるとします。相対的な順序で行番号が表示されている場合は、「ジャンプ10行上のコマンド」があるといいでしょう。カーソルをvi/vimの現在の位置から移動する

おそらく、絶対行番号が表示され、xgg(xは行番号)に行く方が良いでしょうか?

+0

複数回繰り返す必要がある場合:https://superuser.com/questions/429917/repeat-last-normal-mode-command-including-moves-in-vim – toliveira

答えて

65

もちろん、方法があります。 jkが1行下に移動するので、10j10kは10行下に移動します。その前に番号を付けることで、任意のモーションを繰り返すことができます。

これが大変な場合は、set relativenumberにすることもできます。絶対数ではなく、現在の行に相対して行番号を印刷することで、数え切れません。

+0

ありがとう!私はカウントが移動コマンドにも当てはまると考えていたはずです。あなたは私の一日を作った! –

+0

Vim 7.4以降では、.vimrc 'set relativenumber'と' set number'に以下を追加することで、相対と絶対の両方の行番号を同時に見ることができます。これにより、相対線番号に、カーソルがある行の絶対行番号が与えられます。 –

+1

番号を入力した後に 'enter'を入力するだけで、いくつかの行を移動することもできます(絶対行番号の場合はコロンで始まります)。'j'と' k'と普通のキーボードレイアウトに慣れていれば、あまり役に立たないかもしれませんが、矢印使用のColemakユーザの場合、 'enter'はColemak' j'よりも簡単に到達できますQWERTY 'y' key) – SnoringFrog

34

10行を上下に移動すると、タスクや他のオプションに適していない可能性があります。他の動きを考えてみましょう:

Ctrl+f,ページ前と後ろ。

},を1段落移動させます。

あなたがキーに10jをバインドするためにあなたのvimrcでルールを記述することができ、あなたのvimrcファイルに次の行を追加して10行を下に移動しJを言う: map <S-j> 10j

既存の役に立つを上書きすることと思いますがJコマンド(2行を結合)。 10j/10kのよく使われている未使用のキーの組み合わせを見つけるのは難しいかもしれないので、私が言及した既存の動きを使用することをお勧めします。

また、次のようにして表示されている単語に移動することができます。 ?someword/somewordと表示されている単語に転送してください。これらは、10行上/下に移動して、正確な位置にカーソルを移動しようとするよりも速くなります。問題の行の単純な検索文字列を考えることができない場合は、あなたが言ったように常に行番号に行くことができます(xgg)。

+0

ページアップとダウンは私が探していたものを達成しました! – jeremyjjbrown

+0

私はいつもctrl-fとctrl-bを使っていますが、見落とされた{、}はおそらくコードを編集するための最高の粒度です!ありがとう! –

+0

移動する必要がある行数を正確に把握することは不可能に近づいています。 {と}は私の優先オプションです。 – Andrejs

8

私はvimのをいじってたし、あなたが

10- 

またはあなたが最も可能性の高いカーソルの動きをhjklするために使用しているので、あなたはKを使用することができますので、私は、-移動しますアップと+移動しますダウンに気づきました。

+1

前進のために、 'enter'は数字の後に' + 'と同じように働き、ほとんどの時間に手が届きやすくなります – SnoringFrog

+0

@SnoringFrogそうですが、これはちょうど上と下の間に関係があります。とにかくhjklが一番速くなるので、私は誰もが実際にこのように上下に動くことを意味しません。 – Cilan

関連する問題