4

次のような、同じパターンを共有する多くの行を含む大きなファイルがあります。

dbn.py:206 ... (some other text)  <-- I am here
dbn.py:206 ... (some other text)
...
(something I don't know)          <-- I want to jump here

dbp.py:206Vim で一連の処理が終了する場所にジャンプする簡単な方法はありますか?

4

3 に答える 3

5

/^\(dbn.py\)\@!

エスケープされた括弧内のテキストで始まらない最初の行に一致します。

これにすばやくアクセスしたい場合はvmap、視覚的に選択されたテキストをヤンクして適切な場所に挿入する を追加できます (ただし、最初にescape(var, '/').

この vmap を試してください:vmap <leader>n "hy<Esc>/^\(<C-R>=escape(@h,'/')<CR>\)\@!<CR>
スキップしたいテキストを視覚的に選択するときに n を押すと、選択範囲で始まらない次の最初の行に配置されます。

于 2012-07-18T14:47:26.463 に答える
1

同一の行を選択する関数を書くだけです:

nnoremap vii :call SelectIdenticalLines()<CR>
fun! SelectIdenticalLines()
    let s = getline('.')
    let n = line('.')
    let i = n
    let j = n
    while getline(i)==s && i>0
        let i-=1
    endwhile

    while getline(j)==s && j<=line('$')
        let j+=1
    endwhile

    call cursor(i+1, 0)
    norm V
    call cursor(j-1, 0)
endfun

  • タイプviiして同一の行を選択します (キーバインドは自由に変更してください)
  • zfそれらを折りたたむように入力します。
  • 入力zaして折りたたみを切り替えます

複数の空行を詰めたい場合に便利です。C-x C-oemacsのように動作します。

于 2012-07-18T15:19:53.107 に答える
0

1 つのオプションは、ファイルの最後に移動し、目的の最後の行を後方に検索してから、1 つ下に移動することです。

G ?^dbn\.py:206?+1

于 2012-07-18T14:29:29.833 に答える