目前,如果我想创建一个新窗口然后加载缓冲区,我使用:vnew
:buf foo.py
。是否有一个命令可以同时执行这两个操作?
答案 0 :(得分:3)
是的,有一个命令:
:[N]sb[uffer] [N] :sb :sbuffer
Split window and edit buffer [N] from the buffer list. If [N]
is not given, the current buffer is edited. Respects the
"useopen" setting of 'switchbuf' when splitting. This will
also edit a buffer that is not in the buffer list, without
setting the 'buflisted' flag.
您可能会发现这些也很有用:
:[N]sbn[ext] [N] :sbn :sbnext
Split window and go to [N]th next buffer in buffer list.
Wraps around the end of the buffer list. Uses 'switchbuf'
:[N]sbN[ext] [N] :sbN :sbNext :sbp :sbprevious
:[N]sbp[revious] [N]
Split window and go to [N]th previous buffer in buffer list.
Wraps around the start of the buffer list.
Uses 'switchbuf'.
这两个命令的问题在于它们将水平分割。您可以在:vert[ical]
之前加上它们,但这会打破您的一个命令范例: - )
无论如何,:vert sb foo.py
并没有那么多的打字,如果你经常使用它,你可能会考虑为它创建一个地图。也许是这样的:
cnoremap ,sb vert sb
答案 1 :(得分:1)
告诉:vnew
文件的路径:
:vnew foo.py
编辑:
正如sidyll所说,没有内置命令可以垂直拆分窗口来编辑缓冲区,然后我创建了一个新的ex命令,可以执行你想要的操作:
command! -nargs=1 -complete=buffer -bang Vbuffer vnew | buf<bang> <args>
!
之后的command
会替换旧的:Vbuffer
(如果它存在(您可以删除它,因为我已将其添加进行测试),-nargs=1
表示新的:buf
command接受1个参数,该参数使用<args>
传递给-complete=buffer
命令,-bang
将在您为参数名称键入 tab 时建议缓冲区名称,并{{1表示新命令接受!
选项,该选项也使用:buf
传递给<bang>
命令。
只需将该行添加到~/.vimrc
并重新:source
即可。 ; - )