VIM 7:如何以有效的方式从代码库的根源导航代码源代码树?
我有一个在庞大的代码库中跨多个文件导航代码的系统,我想改进/修复它目前的缺点:
我的shell预先配置为在我的代码库的根目录下打开 – 让我们称之为Dev /. 一旦我同步,这个文件就会更新 – 然后我可以使用Dev /中的以下命令在vim中打开我想要的任何文件: vif "part of file name", 哪里 vif: aliased to vi `grep !:1 cscope.files` 如果我将文件名的一部分提供足够长的时间来唯一标识它,我可以立即在vim中打开它. 现在,这种方法的缺点是,当我已经打开一个文件,并跳转到另一个文件而不退出vim时,我能做到的唯一方法是 :!vif *file2* 这会生成一个新shell,然后在那里启动的vim中打开该文件.因此,我无法在两个文件之间切换(使用Ctrl- ^).我无法想出一个解决方案: a)让我立即打开Dev /中的任何文件 b)让我在同一个shell中打开vim中的任何其他文件(一旦我打开现有文件),这样2个vim会话就会互相识别(我可以使用Ctrl-^在2之间跳转) 我知道这是一个很长的问题(如何谷歌这个:)),但我打赌解决方案对于更熟练的vim的人来说简单明了! 如果问题的任何部分是模糊的,请告诉我,我会澄清它…… 更新: 解决方法
在这样的事情中使用vim的grep:
:map <F1> :vim <pattern> cscope.files<CR>gf 例如,有了这个: vnoremap <F1> "ry:exe ':1vim /'.@r.'/ cscope.files'<CR>gf 选择(视觉模式)您要搜索的模式,然后按F1.将打开与模式匹配的第一个文件,替换当前缓冲区*. *如果可以的话.即如果保存当前缓冲区或设置隐藏等. 如果您希望获得提示,请使用input(): nnoremap <F1> :exe ':1vim /'.input("Enter pattern: ").'/ cscope.files'<CR> [但是你必须手动gf,因为input()会消耗地图的其余字符.为避免这种情况,您可以使用inputsave()和inputrestore()] 更新 …例如像这样: function! GetPat() call inputsave() let mypat = input("Enter pattern: ") call inputrestore() return mypat endfunction nnoremap <F1> :exe ':1vim /'.GetPat().'/ cscope.files'<CR>gf (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |