vim 在大型目录结构中有效地在多个文件之间编辑/切换

vim 在大型目录结构中有效地在多个文件之间编辑/切换

我绝不是 vim 高级用户,我刚刚开始掌握 vim 的高级动作和命令。但有一个我似乎无法克服的缺点。

我是伴随着用于编写代码的图形程序长大的,但我最近才开始使用 vim over ssh 和 screen 来处理具有许多文件夹的相当大的项目。

我很好奇 vim 大师如何快速轻松地处理多个文件。以 Rails 应用程序为例。假设您要编辑一个控制器,以便运行。

vim app/controllers/controller.rb

但随后您很快想要更改为编辑视图或数据库迁移,我的第一反应是:wq返回 bash 导航到该目录并在全新的缓冲区中再次启动 vim。

这显然是完全错误的。

我了解到一些事情,例如:

  • 客户端服务器(但我不想通过 ssh 使用 X,这似乎是唯一的方法)
  • :e通过浏览打开另一个文件,但我似乎不能很快做到这一点。 Tab Complete 真的让我很困惑。
  • 打开整个目录并搜索缓冲区。
  • NERDTree 很有前途,但我真的想远离任何图形表示,以不断迫使我掌握命令行导航

我为自己的天真道歉,但我真的很想学习正确的方法,即使它非常主观。

您的方法是什么?您会推荐什么?

答案1

可以设置 vim 编辑多个文件而无需退出。您使用多个缓冲区并在它们之间切换。由于您在屏幕内使用 vim,您可以将以下内容放入 ~/.vimrc 中以启用它。

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

这些键映射映射到 Ctrl-左箭头键和右箭头键以在缓冲区之间切换。 F4 键调用 GUI 将显示的相同菜单。按 T​​ab 键现在还会显示一个小菜单,用于在按 Tab 键时选择完成。

答案2

哈!我曾经和你一模一样,所以我知道确切地你来自哪里。即使现在我在一定程度上知道我在做什么(我不是 vim 大神,但我希望能做到这一点),我仍然偶尔会执行 :wq 并返回到我的 shell。

看一下这个- 这可能对你有帮助。 (它也会对我有帮助,因为我从来不知道这一点。这就是 stackexchange 网站的伟大之处 - 你可以通过帮助别人学习来学习!)

以下是我所做的一些事情。

  1. 命令:e。在 vim 内部,编辑文件时,您可以执行类似操作:e dir/subdir/otherfile,它将在新缓冲区中打开它,这意味着您将同时打开两个文件。

  2. Ctrl-Shift-6(不知道实际的 ascii 值)。如果您打开了两个缓冲区,则可以使用此开关在它们之间快速切换。

  3. bd- 缓冲区删除。让您清除缓冲区。

  4. 这是一个非常非常方便的工具 - :sh。如果您出于任何原因必须返回 shell(例如,查看目录并 chmod 文件),您可以调用 vim 的 shell 命令 do 执行此操作。退出 shell 会立即返回到 vim 中的位置。

  5. 在与上面相同的类别中 - 键入:!和随后的 unix 命令将执行该命令。尝试这个与ls. (我认为它也适用于 shell 内置函数,但我不确定。)

这些是我一直使用的。还有:n下一个文件和:p上一个文件,因为你可以在 vim 中同时打开两个以上的缓冲区(不过我通常不这样做)。

答案3

这就是你开始使用的地方插件。用于文件(或缓冲区)管理书呆子树迷你缓冲区浏览器是常见的选择。在你的情况下我会谷歌“vim 红宝石IDE“并按照我找到的众多教程之一进行操作。我使用 Python 和 3 个命令本教程从 Vim 中配置我需要的一切。

答案4

使用 vi :split 命令打开第二个编辑窗口。 split 可以进行水平和垂直分割,并且一次可以进行两个以上分割。我在同一个 vi 会话中打开了多达 10 个文件。

相关内容