是否有一种简单的方法在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>
的原生行为,但它们实际上是复制k
和j
键的行为。