我已经开始使用Vim来开发Perl脚本,并开始发现它非常强大。
我喜欢的一件事是能够同时打开多个文件:
vi main.pl maintenance.pl
然后在他们之间跳来跳去
:n
:prev
然后查看哪个文件是打开的:
:args
要添加一个文件,我可以说:
:n test.pl
我希望它会被添加到我的文件列表中,但相反,它会清除我当前的文件列表,当我输入:args时,我只有test.pl打开。
那么我如何在我的args列表中添加和删除文件?
我已经开始使用Vim来开发Perl脚本,并开始发现它非常强大。
我喜欢的一件事是能够同时打开多个文件:
vi main.pl maintenance.pl
然后在他们之间跳来跳去
:n
:prev
然后查看哪个文件是打开的:
:args
要添加一个文件,我可以说:
:n test.pl
我希望它会被添加到我的文件列表中,但相反,它会清除我当前的文件列表,当我输入:args时,我只有test.pl打开。
那么我如何在我的args列表中添加和删除文件?
当前回答
我认为您在查看已打开的文件列表时可能使用了错误的命令。
尝试执行一个:ls来查看你已经打开的文件列表,你会看到:
1 %a "./checkin.pl" line 1
2 # "./grabakamailogs.pl" line 1
3 "./grabwmlogs.pl" line 0
etc.
然后,您可以通过引用列出的数字来浏览文件,例如: b: 3
或者你可以通过输入数字,但使用sb而不是b来分割屏幕。
作为旁白,%表示当前可见的文件,#表示备用文件。
您可以通过按Ctrl Shift 6在这两个文件之间轻松切换
编辑:像:ls,你可以使用:reg来查看你的寄存器的当前内容,包括0-9寄存器,其中包含你已经删除的内容。如果您想重新使用以前删除的文本,这尤其有用。
其他回答
像: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/*
我经常使用命令行和git,所以我在bashrc中有这个别名:
alias gvim="gvim --servername \$(git rev-parse --show-toplevel || echo 'default') --remote-tab"
这将在现有窗口的新选项卡中打开每个新文件,并为每个git存储库创建一个窗口。 因此,如果你从回购A中打开两个文件,从回购B中打开三个文件,你将最终得到两个窗口,一个是回购A,有两个选项卡,一个是回购B,有三个选项卡。
如果你正在打开的文件不包含在git repo中,它将进入一个默认窗口。
为了在选项卡之间跳转,我使用了以下映射:
nmap <C-p> :tabprevious<CR>
nmap <C-n> :tabnext<CR>
要一次打开多个文件,您应该将此方法与其他解决方案之一结合使用。
我做了一个非常简单的视频来展示我使用的工作流程。基本上我使用Ctrl-P Vim插件,并将缓冲区导航映射到Enter键。
通过这种方式,我可以在普通模式下按Enter,查看打开的文件列表(在屏幕底部的一个小新窗口中显示),选择我想编辑的文件并再次按Enter。要快速搜索多个打开的文件,只需输入部分文件名,选择文件并按Enter。
视频中打开的文件不多,但当你开始有很多文件时,它会变得非常有用。
由于插件使用MRU顺序对缓冲区进行排序,您只需按两次Enter键就可以跳转到您正在编辑的最新文件。
插件安装完成后,你唯一需要做的配置是:
nmap <CR> :CtrlPBuffer<CR>
当然,您可以将它映射到不同的键,但我发现要输入的映射非常方便。
Vim(但不是原始的Vi!)有制表符,我发现(在许多情况下)比缓冲区更好。你可以说:table [filename]在新选项卡中打开一个文件。标签之间的循环是通过点击标签或组合键[n]gt和gt来完成的。graphic Vim甚至有图形标签。
清单
要查看当前缓冲区的列表,我使用:
:ls
开放
要打开一个新文件,我使用
:e ../myFile.pl
增强的TAB补全功能(将set wildmenu放在你的.vimrc中)。
注意:你也可以使用:find,它会为你搜索一组路径,但是你需要先自定义这些路径。
切换
要在所有打开的文件之间切换,我使用
:b myfile
增强选项卡完成(仍然设置野生菜单)。
注意::b#选择最后访问的文件,因此您可以使用它在两个文件之间快速切换。
使用windows
Ctrl-W s和Ctrl-W v水平和垂直分割当前窗口。你也可以使用:split和:vertical split (:sp和:vs)
Ctrl-W w在打开的窗口之间切换,Ctrl-W h(或j或k或l)在打开的窗口中导航。
按Ctrl-W c关闭当前窗口,按Ctrl-W o关闭除当前窗口外的所有窗口。
使用-o或-o标志启动vim将打开每个文件各自的分割。
有了所有这些,我不需要在Vim中使用标签,我的手指可以找到缓冲区,而不是眼睛。
注意:如果您希望所有文件都转到同一个Vim实例,请使用——remote-silent选项启动Vim。