我绝不是 vim 的高级用户,我才刚刚开始掌握 vim 的高级动作和命令。但是有一个我似乎无法解决的缺点。
我是在编写代码的图形程序中长大的,但我最近才开始在 ssh 和 screen 上使用 vim 来处理具有许多文件夹的相当大的项目。
我很好奇 vim 大师如何快速轻松地处理多个文件。以 Rails 应用程序为例。假设您要编辑控制器以便运行。
vim app/controllers/controller.rb
Run Code Online (Sandbox Code Playgroud)
但是随后您很快想要更改为编辑视图或数据库迁移,我的第一反应是:wq
,返回 bash 以导航到该目录并在全新的缓冲区中再次启动 vim。
这显然是完全错误的。
我已经了解了几件事,例如:
:e
通过浏览打开另一个文件,但我似乎无法很快完成。Tab Complete 真的让我很兴奋。我为自己的天真而道歉,但我真的很想学习正确的方法,即使它非常主观。
你有什么方法,你会推荐什么?
可以设置 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>
Run Code Online (Sandbox Code Playgroud)
这些键映射映射到 Ctrl-Left 和 Right 箭头键以在缓冲区之间切换。F4 键调用 GUI 将显示的相同菜单。现在按下 Tab 键还会显示一个小菜单,用于在按下 Tab 键时选择完成。
哈!我曾经和你一模一样,所以我确切地知道你来自哪里。即使现在我在一定程度上知道我在做什么(我不是 vim 上帝,但我希望到达那里)我仍然会偶尔做一个 :wq 并回到我的外壳。
看看这个- 这可能对你有帮助。(它也会帮助我,因为我从来不知道这一点。这就是 stackexchange 站点的美妙之处——你通过帮助他人学习来学习!)
这是我做的一些事情。
该:e
命令。在 vim 内部,编辑文件时,您可以执行类似操作:e dir/subdir/otherfile
,它将在新缓冲区中打开它,这意味着您将同时打开两个文件。
Ctrl-Shift-6
(不知道实际的 ascii 值)。如果您打开了两个缓冲区,您可以使用此切换按钮在它们之间快速切换。
bd
- 缓冲区删除。让您清除缓冲区。
这是一个非常方便的 - :sh
. 如果您出于任何原因必须返回 shell(例如,查看目录并 chmod 文件),您可以调用 vim 的 shell 命令来执行此操作。退出 shell 会将您带回到您在 vim 中的位置。
在与上述相同的类别中 - 键入:!
和之后的 unix 命令将执行该命令。试试这个ls
。(我认为它也适用于 shell 内置函数,但我不确定。)
这些是我一直使用的。还有:n
下:p
一个文件和上一个文件,因为您可以同时在 vim 中打开两个以上的缓冲区(不过,我通常不这样做)。