我已经开始使用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列表中添加和删除文件?
当前回答
我使用以下,这给了你很多功能,你会期望在其他编辑器,如Sublime文本/ Textmate
Use buffers not 'tab pages'. Buffers are the same concept as tabs in almost all other editors. If you want the same look of having tabs you can use the vim-airline plugin with the following setting in your .vimrc: let g:airline#extensions#tabline#enabled = 1. This automatically displays all the buffers as tab headers when you have no tab pages opened Use Tim Pope's vim-unimpaired which gives [b and ]b for moving to previous/next buffers respectively (plus a whole host of other goodies) Have set wildmenu in your .vimrc then when you type :b <file part> + Tab for a buffer you will get a list of possible buffers that you can use left/right arrows to scroll through Use Tim Pope's vim-obsession plugin to store sessions that play nicely with airline (I had lots of pain with sessions and plugins) Use Tim Pope's vim-vinegar plugin. This works with the native :Explore but makes it much easier to work with. You just type - to open the explorer, which is the same key as to go up a directory in the explorer. Makes navigating faster (however with fzf I rarely use this) fzf (which can be installed as a vim plugin) is also a really powerful fuzzy finder that you can use for searching for files (and buffers too). fzf also plays very nicely with fd (a faster version of find) Use Ripgrep with vim-ripgrep to search through your code base and then you can use :cdo on the results to do search and replace
其他回答
我有效处理多个文件的方法是使用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
这个线程中的一些答案建议使用制表符,其他建议使用buffer来完成同样的事情。制表符和缓冲区是不同的。我强烈建议你阅读这篇文章“Vim标签疯狂-缓冲区vs标签”。
下面是我从这篇文章中摘录的一个很好的总结:
简介:
缓冲区是文件在内存中的文本。 窗口是缓冲区上的视口。 标签页是窗口的集合。
我使用了多个隐藏在~/中的缓冲区。vimrc文件。
迷你缓冲区资源管理器脚本也很好,可以获得缓冲区的紧凑列表。然后:b1或:b2…要转到适当的缓冲区或使用迷你缓冲区资源管理器并通过缓冲区使用TAB。
:ls
用于打开缓冲区的列表
:bp前一个缓冲区 :bn下一个缓冲区 :bn (n个数字)移动到第n个缓冲区 :b <filename-part> with tab-key提供自动补全功能(太棒了!!)
在某些版本的vim中,bn和bp实际上分别是bnext和bprevious。Tab自动补全在这种情况下很有用。
或者当您处于正常模式时,使用^切换到您正在处理的最后一个文件。
另外,您可以保存vim的会话
:mksession! ~/today.ses
上面的命令将当前打开的文件缓冲区和设置保存到~/today.ses。您可以使用
vim -S ~/today.ses
记起昨天讲到哪里就不麻烦了。;)
我做了一个非常简单的视频来展示我使用的工作流程。基本上我使用Ctrl-P Vim插件,并将缓冲区导航映射到Enter键。
通过这种方式,我可以在普通模式下按Enter,查看打开的文件列表(在屏幕底部的一个小新窗口中显示),选择我想编辑的文件并再次按Enter。要快速搜索多个打开的文件,只需输入部分文件名,选择文件并按Enter。
视频中打开的文件不多,但当你开始有很多文件时,它会变得非常有用。
由于插件使用MRU顺序对缓冲区进行排序,您只需按两次Enter键就可以跳转到您正在编辑的最新文件。
插件安装完成后,你唯一需要做的配置是:
nmap <CR> :CtrlPBuffer<CR>
当然,您可以将它映射到不同的键,但我发现要输入的映射非常方便。