vim不需要输入路径直接打开文件

方法1:在vim命令行输入

:set path=./**   (当前目录下所有路径)

:find filename

即可打开文件,嫌两个命令麻烦的话,可以做一下map。不过这个命令速度稍微慢一点,特别是公共目录文件夹很大的话,另外不知道能不能设置多个路径。

------------------------------------------------------------------------------------------------

方法2:使用gvim查看文件的时候,常会遇到需要跳转到子函数文件的情况。当子函数文件不在当前目录时就需要重新去找到文件路径,再打开,比较麻烦。

使用vim插件,提前加载文件目录,只需要输入文件名就可以查看文件

以verilog文件来举例,打开子module文件

使用python完成加载path.list,获取module name以及打开文件

import sys
import os
import re
import vim

pat_inst_name  = re.compile("^(?P<blen>\s*)(?P<mname>\w+)")

def get_dir_list():
    fp = open("./path.list", "r")
    vim.command("let g:asPathList=[]")
    for item in fp.readlines():
        vim.command("let g:asPathList=add(g:asPathList, '%s')"%(item.strip()))

    vim.command("let g:asPathList=add(g:asPathList, '%s')"%(os.path.abspath("./")))
    fp.close()

def get_module_name():
    objMname = pat_inst_name.search(vim.current.line)
    mname = ""
    if objMname is not None:
        mname = objMname.group("mname")
    else:
        print("ERROR: can't find module name in current line")
    return mname

def open_file(mname):
    pathList = vim.eval("g:asPathList")
    for item in pathList:
        fpath = os.path.join(item, mname+".v")
        if os.path.exists(fpath) is True:
            vim.command(":sp %s"%(fpath))
            break

使用autosplit.vim调用python函数

nmap ;sp :call AutoSplit() <Enter>

function! AutoSplit(...)
python3 << EOF
import os
import sys
import vim
vpath = "/home/user/.vim/plugin" #vim path
if vpath not in sys.path:
    sys.path.append(vpath)
import autosplit

listArgs = vim.eval("a:000")
flag = listArgs[0] if len(listArgs) > 0 else ""
if flag == "#init#":
    autosplit.get_dir_list()
else:
    mname = autosplit.get_module_name()
    if mname != "":
        autosplit.open_file(mname)
EOF
endfunction

call AutoSplit("#init#")

在module name上normal模式用“;sp”即可打开对应文件

新建对应的两个文件放到~/.vim/plugin即可

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值