键在vim中两个Windows之间循环



是否有一种简单的方法在vim中两个窗口(缓冲区!)之间循环?对于vim file1 file2,可以用:n:N来来回转换。但是这很麻烦,如果两次输入:n:N会导致错误。

我希望像ZZ这样简单的东西可以用一个键来回切换。

是否有一种简单的方法在两个窗口(缓冲区)之间循环

嗯……"窗口", "缓冲区",或者,因为你使用的是:n:N, "文件"?它们根本不是一回事。

文件

正如在注释中提到的,<C-^>(或某些键盘上的<C-6>)可用于在两个文件之间切换,但是,由于它依赖于"替代文件"的概念,因此必须先执行:next以建立两个文件之间的关系。

参数列表(作为参数传递给Vim的文件存储的列表)的问题是,它是相当低级的。:n:N不绕行,替代文件不自动设置,等等。游手好闲的人。

的例子:

$ vim file1 file2    # open two files, file1 is current
:n                   " switch to file2
<C-^>                " switch to file1
<C-^>                " switch to file2
<C-^>                " switch to file1
…

参见:help argument-list

缓冲

每"file"在Vim中打开的(从Vim内部或从shell)将变成一个缓冲区,因此,除了低级参数列表之外,您还拥有在稍高级别操作的缓冲区列表。

因为你只打开了两个文件,所以你只有两个缓冲区,你可以在它们之间切换:help :bnext,因为与:n:N不同,:bn(和:bN)环绕。

的例子:

$ vim file1 file2    # open two files and therefore two buffers, file1 is current
:bn                  " switch to file2
:bn                  " switch to file1
:bn                  " switch to file2
:bn                  " switch to file1
…

请注意,如果您愿意,您可以将:bn映射到更简单的东西。

<C-^>也可以在这种情况下使用,因为"file"one_answers";buffer"有点模糊,但你还是要先通过手动切换建立关系。

<<h2>窗口/h2>您可以使用<C-w>p::help CTRL-W_p在两个窗口之间切换。

未来的

<C-^>非常有用,但是你需要在两个文件/缓冲区之间建立一个关系才能工作,不幸的是Vim在启动时不会这样做。虽然这是可能的,但它并不完全是直观的。YMMV:

$ vim +n +N file1 file2

参见:help -+c

我在我的~/中设置了以下内容。Vimrc .

""""  Faster buffer cycling """
nnoremap <C-n> :bnext<CR>
nnoremap <C-p> :bprev<CR>

这样做会牺牲<c-n><c-p>的原生行为,但它们实际上是复制kj键的行为。

最新更新