GVim管理”工程“?

GVim管理”工程“?

  经常看到新手朋友问Vim怎么管理工程之类的问题,其实这是对Vim的误解,它只是个编辑器而不是IDE,它不负责工程管理。工程管理应该交给CMake之类的(不然你还指望能像vscode那样有WorkSpace功能吗?目前我没发现)。如果你只是想用GVim方便的管理文件和文件夹的话还是能做到的,具体可以用Vim自带的目录树管理插件或用NerdTree之类的插件。
  用过之后你可能会郁闷遇到“如何让GVim启动就默认打开某个目录或文件?”,更方便点“如何想让哪个文件或文件夹用GVim启动就能立刻启动?”。这篇博客就是回答这两个问题的。

如何让GVim启动就默认打开某个目录或文件?

  • 借助插件
      其实很多插件都集成了MRU,它可以罗列出近期访问过的文件清单,你可以从清单里选择你需要的文件直接打开它。这样的插件有ctrlp、fzf、leaderf等,还有挺多人用vim-startify这个插件,它专门有个界面在启动时把近期文件列出来让你选择,不过我个人还是习惯用简单的leaderf的mru。

  • 在vimrc中加入指令
      网上有一些大神自己写了vim脚本,把访问过的文件路径写入到本地一个备份文件中,下次自动打开。不过这种方法用起来不直观,不能像mru那样直观的选择,具体代码网上有我就不搬运了。
      可能有些人不知道vim自带一个指令可以显示最近访问过的文件。:browse oldfiles,输入这个指令后就会出现文件清单,找到你想打开的文件后按q退出,推出前会让你输入文件编号,输入并回车可以打开。以下是效果图:
    GVim管理”工程“?_第1张图片
      效果很差,罗列了一堆不需要的临时文件。
      在vimrc里店家cd指令,因为GVim支持cd指令,在vimrc中写入可以保证在GVim启动后立刻进入某个目录。示例:
    GVim管理”工程“?_第2张图片
      这个指令是我早期经常用的,我会把最近经常编辑的工程根目录路径写入到vimrc中,通过cd指令下次自动进入跟目录。现在基本不用了(我现在喜欢更灵活的鼠标右键启动,下文会讲),因为我经常访问的目录可能有三四个,而cd每次只能执行一个。

如何想让哪个文件或文件夹用GVim启动就能立刻启动?

  • 将GVim添加到鼠标右键启动。
      鼠标右键启动是一种很灵活有效的方式,当你想对哪个文件或文件夹用GVim启动时,无需再手动切换路径或输入指令,从右键菜单里启动GVim,它就会在你期望的路径打开你期望的文件。
      怎么实现将GVim添加到鼠标右键启动项里呢?Windows下当然需要添加到注册表里。按鼠标右键的对象不同,可以分为三种情况,这三种情况都需要分别设置注册表。以下讲解这三种情况的设置,具体的添加方式你可以写个批处理自动执行或手动设置,我这里讲下手动设置。

    • 对文件鼠标右键
        在运行里输入regedit即可打开注册表编辑器,找到选项HKEY_CLASSES_ROOT -> * -> shell,在shell下新建项(鼠标右键)将其命名为GVim,在新建项GVim下新建字符串值(鼠标右键),这时候右边除了默认还多了一个,将其命名为Icon,双击编辑它,在数值数据里写入如:D:\cpy\WorkSpace\Install\gvim_8.1.1006_x64\Vim\vim81\gvim.exe,0,路径指向你的gvim.exe(根据你自己的路径修改),他的作用就是鼠标右键菜单时有个GVim的图标。
        只给了了图标的路径还需要给出可执行文件exe的启动路径。在刚才的GVvim下新建项命名为Command,选中Commond双击右边窗口的(默认)选项,将数值数据填入D:\cpy\WorkSpace\Install\gvim_8.1.1006_x64\Vim\vim81\gvim.exe "%1",这里启动路径指向exe,%1意思是当前文件的路径(也就是你鼠标选中的文件的全路径(包含文件名)),启动时1%表示的路径将传入gvim.exe因此也就启动并打开了被选中文件,并且GVim也将处于该文件所处的文件夹路径下,你的NerdTree将聪明的来到该路径下显示其他的文件和文件夹。
      GVim管理”工程“?_第3张图片

    • 对文件夹鼠标右键
        以上方法仅对问价鼠标右键有用,对文件夹方法类似。注册表找到Directory -> shell,在shell下新建项GVim,对其新建字符串值命名为Icon,双击右边的新添加的Icon在数值数据里填入D:\cpy\WorkSpace\Install\gvim_8.1.1006_x64\Vim\vim81\gvim.exe,0,对刚才新建的GVim新建项命名为Command,双击右边窗口的(默认)在数值数据里填入D:\cpy\WorkSpace\Install\gvim_8.1.1006_x64\Vim\vim81\gvim.exe --cmd "cd "%v"",这里--cmdcd是GVim所支持的指令,具体在vim帮助文档staring.txt中可以查到。%v表示所选文件夹的路径。在GVim启动时会传入这些指令,让其执行cmd指令及cd到所选文件夹路径内。
        这里讲以下遇到的坑,如果你看过文档就会发现里面还有个类似的指令-c/+,如果用这个指令当路径含中文时时打不开的,貌似乱码了。
      GVim管理”工程“?_第4张图片

    • 对桌面或文件夹空白处鼠标右键
        Directory -> Background -> shell下新建项GVim,对其新建字符串值命名为Icon,双击右边的新添加的Icon,在数值数据中填入D:\cpy\WorkSpace\Install\gvim_8.1.1006_x64\Vim\vim81\gvim.exe,0,对新建的GVim新建项命名为Command,双击右边的(默认)在数值数据里填入D:\cpy\WorkSpace\Install\gvim_8.1.1006_x64\Vim\vim81\gvim.exe --cmd "cd "%v"",和上面一样的就不啰嗦了。
      GVim管理”工程“?_第5张图片

      搞完了,去试试效果吧。呼呼,终于可以休息了。

你可能感兴趣的:(Vim)