浏览多个文件


11

如果我开VIM与命令行上的多个文件,例如vim debug.log*其负载debug.logdebug.log.1并且debug.log.2,可以予它们之间导航,将它们分配到多个窗口(:split/ :vsplit)或这样的?

对于这种操作模式,我知道的唯一快捷方式是:n,它将在列表中加载下一个文件。在这种多文件操作模式下,我还能做什么?(或哪个帮助主题涵盖了这一点?)


3
:previous(或:prev)是的倒数:n,并返回文件。
丰富

Answers:


13

最相关的帮助主题是:ls,也称为 :files:buffers

在您的vim debug.log*示例中,如果您给出:ls命令,您将看到:

:ls
  1 %a   "debug.log"                    line 1
  2      "debug.log.1"                  line 0
  3      "debug.log.2"                  line 0
Press ENTER or type command to continue

…表示第一个是活动缓冲区。

debug.log.2在当前窗口中打开,请输入:b 3or :b debug.log.2命令以显示缓冲区3。

要分割窗口并在其中打开缓冲区2,请输入:sb 2命令。的垂直分割版本为:vert sb 2

:b命令有许多变体。浏览此处引用的帮助主题以了解它们。


此外,您可以调用vim -o debug.log*以打开所有文件,每个文件以其自己的拆分vim -O debug.log*方式打开,或以垂直拆分方式打开它们。


6

除了200_success提到的原始vim功能之外,Vim的生态系统还包含许多插件来提供额外的功能,例如:

但是,在开始使用插件之前,最好完全了解vim中的缓冲区和窗口。


1
请阅读我们关于插件推荐答案的政策,并添加一些有关这些插件如何使用户受益的详细信息。
200_success 2015年

6

您也可以使用不同的参数打开vim。

在选项卡中打开文件:

vim -p debug.log*

以垂直分割打开文件:

vim -o debug.log*

有一个很酷且功能强大的插件,称为CtrlSpace:

https://github.com/szw/vim-ctrlspace

如果您需要处理许多文件,这将非常方便。只需将ctrl-space想象成每个选项卡的缓冲区列表即可。正如作者指出的那样,它提供了一种在文件之间导航的非常简单的方法:

Vim-CtrlSpace是一个Vim插件,用于控制和组织Vim中的工作空间。包括管理缓冲区,文件,选项卡,会话和最终项目。它的方法有些独特,但是您肯定会感到宾至如归,特别是如果您使用已拆分的窗口,选项卡,缓冲区等。


欢迎来到Vi / Vim!请阅读我们关于插件推荐答案的政策,并添加一些有关插件如何准确解决问题的详细信息。
200_success


4

如果要打开特定文件而无需经过:ls,则可以使用以下任一方法:

  • :vs filename 以垂直分割打开文件
  • :sp filename 做相同的,但在水平分割
  • :tabe filename 在新标签页中打开

同样值得一提的是,如果您不指定文件名,则将打开当前文件的新拆分/选项卡,这对于长文件来说非常方便。


2
:t是复制命令。因为:tabedit你至少需要:tabe
tommcdo

哦,党,你是完全正确的。谢谢,我来编辑!
汤姆(Tom)

0

有几个浏览多个文件的有用快捷方式:

  • CTRL-^(其中N的缓冲区号)跳转到先前编辑的文件。
  • N CTRL-^N缓冲区编号在哪里)以跳转到特定缓冲区。

    例如:

    • 1Control+^ -转到第一个缓冲区
    • 2Control+^ -转到第二缓冲区
    • 等等

    等同于:buffer N

  • 使用:Ex/ :Sex/ :Vex浏览当前目录。

  • 在您的自定义快捷方式中使用:tabsvim -p),.vimrc例如:

    " TABS
    " To create a new tab (Control-T)
    nnoremap <C-t> :tabnew<CR>
    inoremap <C-t> <Esc>:tabnew<CR>
    " Tab Navigation (Control+Left <-> Control-Right, Shift+H <-> Shift+L).
    nnoremap <S-h> gT
    nnoremap <S-l> gt
    nnoremap <A-Left> gT
    nnoremap <A-Right> gt
    nnoremap <C-S-Tab> gT
    nnoremap <C-Tab> gt
    " Tab Close (Control-W)
    nnoremap <C-BS> :tabclose<CR>
    inoremap <C-BS> <Esc>:tabclose<CR>
    " Close All (Control-Q)
    nnoremap <C-q> :qa<CR>
    inoremap <C-q> <Esc>:qa<CR>
    
  • 使用:ba/ :vert ba到分裂,跳进经由选择的缓冲器Control+ww/ W,然后使它当前窗口(:on)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.