在Vim中有没有一种简单的方法可以在两个窗口(buffers!)之间循环?使用vim file1 file2可以使用:n和:N来回切换。但是这很麻烦,如果:n或:N被键入两次就会导致错误。我希望像ZZ这样简单的东西可以用一个键来回移动。
vim file1 file2
:n
:N
ZZ
2ic8powd1#
是否有简单的方法在两个窗口之间循环(缓冲区!)嗯...“窗口”,“缓冲区”,或者,因为你使用的是:n和:N,“文件”?它们根本不是一回事。
正如注解中提到的,<C-^>(或某些键盘上的<C-6>)可以用于在两个文件之间切换,但由于它依赖于“备用文件”的概念,因此必须首先执行:next,以便建立两个文件之间的关系。参数列表的问题是,它是存储作为参数传递给Vim的文件的列表,它是相当低级的。:n和:N不会换行,替代文件不会自动设置,等等。示例:
<C-^>
<C-6>
:next
$ 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。
:help argument-list
你在Vim中打开的每个“文件”(从Vim内部或从shell)都变成了一个 buffer,因此,除了低级参数列表之外,你还有一个在稍高级别上操作的缓冲区列表。由于您只打开了两个文件,因此只有两个缓冲区,您可以使用:help :bnext在这两个缓冲区之间切换,因为与:n和:N不同,:bn(和:bN)是环绕的。示例:
:help :bnext
: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 …
请注意,如果需要,可以将:bnMap到更简单的对象。<C-^>也可以用在这个上下文中,因为“file”和“buffer”之间的边界有点模糊,但是您仍然必须首先通过手动切换来建立关系。窗口您可以使用<C-w>p在两个窗口之间切换::help CTRL-W_p .
<C-w>p
:help CTRL-W_p
<C-^>非常有用,但是你需要在两个文件/缓冲区之间建立一个关系,而Vim在启动时不能这样做。虽然可以强制这样做,但是这并不直观。YMMV:
$ vim +n +N file1 file2
请参阅:help -+c。
:help -+c
kfgdxczn2#
为此,我在我的~/.vimrc中设置了以下内容。
"""" Faster buffer cycling """ nnoremap <C-n> :bnext<CR> nnoremap <C-p> :bprev<CR>
这样做牺牲了<c-n>和<c-p>的本机行为,但这些行为实际上是k和j键的行为的复制。
<c-n>
<c-p>
k
j
2条答案
按热度按时间2ic8powd1#
是否有简单的方法在两个窗口之间循环(缓冲区!)
嗯...“窗口”,“缓冲区”,或者,因为你使用的是
:n
和:N
,“文件”?它们根本不是一回事。个文件
正如注解中提到的,
<C-^>
(或某些键盘上的<C-6>
)可以用于在两个文件之间切换,但由于它依赖于“备用文件”的概念,因此必须首先执行:next
,以便建立两个文件之间的关系。参数列表的问题是,它是存储作为参数传递给Vim的文件的列表,它是相当低级的。
:n
和:N
不会换行,替代文件不会自动设置,等等。示例:
请参阅
:help argument-list
。缓冲液
你在Vim中打开的每个“文件”(从Vim内部或从shell)都变成了一个 buffer,因此,除了低级参数列表之外,你还有一个在稍高级别上操作的缓冲区列表。
由于您只打开了两个文件,因此只有两个缓冲区,您可以使用
:help :bnext
在这两个缓冲区之间切换,因为与:n
和:N
不同,:bn
(和:bN
)是环绕的。示例:
请注意,如果需要,可以将
:bn
Map到更简单的对象。<C-^>
也可以用在这个上下文中,因为“file”和“buffer”之间的边界有点模糊,但是您仍然必须首先通过手动切换来建立关系。窗口
您可以使用
<C-w>p
在两个窗口之间切换::help CTRL-W_p
.前进
<C-^>
非常有用,但是你需要在两个文件/缓冲区之间建立一个关系,而Vim在启动时不能这样做。虽然可以强制这样做,但是这并不直观。YMMV:请参阅
:help -+c
。kfgdxczn2#
为此,我在我的~/.vimrc中设置了以下内容。
这样做牺牲了
<c-n>
和<c-p>
的本机行为,但这些行为实际上是k
和j
键的行为的复制。