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

Vim中是否有快速跳转到连续dbp.py:206结束的地方的方法?

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-o在 emacs 中一样。

于 2012-07-18T15:19:53.107 回答
0

一种选择是转到文件底部并向后搜索所需的最后一行,然后向下搜索:

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

于 2012-07-18T14:29:29.833 回答