我已经开始使用Vim来开发Perl脚本,并开始发现它非常强大。

我喜欢的一件事是能够同时打开多个文件:

vi main.pl maintenance.pl

然后在他们之间跳来跳去

:n
:prev

然后查看哪个文件是打开的:

:args

要添加一个文件,我可以说:

:n test.pl

我希望它会被添加到我的文件列表中,但相反,它会清除我当前的文件列表,当我输入:args时,我只有test.pl打开。

那么我如何在我的args列表中添加和删除文件?


当前回答

如果你要使用多个缓冲区,我认为最重要的事情是 设置隐藏 这样它就能让你切换缓冲区即使你要离开的缓冲区中有未保存的更改。

其他回答

添加到args列表:

:argadd

从args列表中删除:

:argdelete

在您的示例中,您可以使用:argedit test.pl将test.pl添加到args列表中,并一步编辑该文件。

:帮助参数提供了更多的细节和高级用法

如果只使用vim内置命令,我所见过的在多个缓冲区之间切换的最好的命令是:

nnoremap <Leader>f :set nomore<Bar>:ls<Bar>:set more<CR>:b<Space>

它完美地结合了:ls和:b命令——列出所有打开的缓冲区,并等待您输入切换缓冲区的命令。

给定vimrc中的上述映射,一旦输入<Leader>f,

显示所有打开的缓冲区 您可以: 输入23进入缓冲区23, 输入#进入替代/MRU缓冲区, 输入文件的部分名称,然后输入<Tab>,或<C-i>来自动补全, 或者只是<CR>或<Esc>来保持在当前缓冲区

上面键映射的输出快照如下:

:set nomore|:ls|:set more
  1  h    "script.py"    line 1
  2 #h  + "file1.txt"    line 6  -- '#' for alternative buffer
  3 %a    "README.md"    line 17 -- '%' for current buffer
  4       "file3.txt"    line 0  -- line 0 for hasn't switched to
  5     + "/etc/passwd"  line 42 -- '+' for modified
:b '<Cursor> here'

在上图中:

第二列:%a为当前,h为隐藏,#为以前,空为尚未切换到。 第三列:+表示修改。

另外,我强烈建议设置隐藏。看:帮助“隐藏”。

我有效处理多个文件的方法是使用tmux。

它允许你垂直和水平分割窗口,如下所示:

I have it working this way on both my mac and linux machines and I find it better than the native window pane switching mechanism that's provided (on Macs). I find the switching easier and only with tmux have I been able to get the 'new page at the same current directory' working on my mac (despite the fact that there seems to be options to open new panes in the same directory) which is a surprisingly critical piece. An instant new pane at the current location is amazingly useful. A method that does new panes with the same key combos for both OS's is critical for me and a bonus for all for future personal compatibility. Aside from multiple tmux panes, I've also tried using multiple tabs, e.g. and multiple new windows, e.g. and ultimately I've found that multiple tmux panes to be the most useful for me. I am very 'visual' and like to keep my various contexts right in front of me, connected together as panes.

Tmux还支持水平和垂直窗格,这是旧屏幕所不支持的(尽管mac的iterm2似乎支持它,但是,当前的目录设置对我来说不管用)。tmux 1.8

像:e和:badd这样的东西只接受一个参数,因此下面的将会失败

:e foo.txt bar.txt
:e /foo/bar/*.txt
:badd /foo/bar/*

如果您想从vim中添加多个文件,请使用arga[dd]

:arga foo.txt bar.txt
:arga /foo/bar/*.txt
:argadd /foo/bar/*

当在vim中使用多个文件时,我主要使用这些命令(打开了大约350个文件):

:b <partial filename><tab>(跳转到缓冲区) :bw(缓冲区擦除,删除缓冲区) :e <文件路径>(编辑,打开一个新的缓冲区> . Pltags -允许跳转到子例程/方法定义