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

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

vi main.pl maintenance.pl

然后在他们之间跳来跳去

:n
:prev

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

:args

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

:n test.pl

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

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


当前回答

我经常使用命令行和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>

要一次打开多个文件,您应该将此方法与其他解决方案之一结合使用。

其他回答

这里有很多答案!我不用重新发明轮子——最著名的插件(不会很快消亡,被很多人使用)是超快和极客的。

ctrlpvim / ctrlp。Vim -查找文件的名称模糊搜索的位置或只是它的名称 jlanzarotta/bufexplorer -用来浏览打开的缓冲区(当你不记得最近打开和修改了多少文件,也不记得它们在哪里时,可能是因为你用Ag搜索了它们) rk / ag)。Vim搜索关于gitignore的文件 Scrooloose /nerdtree查看目录结构,查找,添加/删除/修改文件

编辑:最近我一直在使用dyng/ctrlsf。vim搜索上下文视图(像Sublime搜索),我把引擎从ag切换到ripgrep。演出非常出色。

EDIT2:与CtrlSF一起,您可以使用mg979/vim-visual-multi,一次更改多个文件,然后在最后一次保存它们。

我经常使用命令行和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>

要一次打开多个文件,您应该将此方法与其他解决方案之一结合使用。

When I started using VIM I didn't realize that tabs were supposed to be used as different window layouts, and buffer serves the role for multiple file editing / switching between each other. Actually in the beginning tabs are not even there before v7.0 and I just opened one VIM inside a terminal tab (I was using gnome-terminal at the moment), and switch between tabs using alt+numbers, since I thought using commands like :buffers, :bn and :bp were too much for me. When VIM 7.0 was released I find it's easier to manager a lot of files and switched to it, but recently I just realized that buffers should always be the way to go, unless one thing: you need to configure it to make it works right.

所以我尝试了vim-airline,并启用了可视的顶部选项卡式缓冲条,但图形与我的iTerm2有问题,所以我尝试了其他几个,似乎MBE最适合我。我还设置shift+h/l作为快捷键,因为原来的那些(移动到当前页面的头部/尾部)对我来说不是很有用。 map <S-h>:bprev<返回> map <S-l>:bnext<返回>

它似乎比gt和gt更简单,而且:e也比:tabnew更简单。我发现:bd不像:q那样方便,虽然(MBE有一些问题),但我可以在缓冲区中使用所有文件。

添加到args列表:

:argadd

从args列表中删除:

:argdelete

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

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

To open 2 or more files with vim type: vim -p file1 file2 After that command to go threw that files you can use CTRL+Shift+↑ or ↓ , it will change your files in vim. If u want to add one more file vim and work on it use: :tabnew file3 Also u can use which will not create a new tab and will open file on screen slicing your screen: :new file3 If u want to use a plugin that will help u work with directories and files i suggest u NERDTree. To download it u need to have vim-plug so to download other plugins also NERDTree to type this commands in your ~/.vimrc.

    let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim'
    if empty(glob(data_dir . '/autoload/plug.vim'))
      silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs 
      https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
      autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
    endif

    call plug#begin('~/.vim/plugged')
    Plug 'scrooloose/nerdtree'
    call plug#end()

然后通过命令:wq保存.vimrc,返回并输入::PlugInstall

之后,插件将被安装,你可以使用你的NERDTree与其他插件。