亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 3812 | 回復(fù): 5
打印 上一主題 下一主題

[翻譯] 好用的vim function(快速定位Perl Module) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-06-09 21:58 |只看該作者 |倒序?yàn)g覽
在vim里編輯perl代碼時(shí),只要將光標(biāo)移到模塊名上,然后敲入':gm',就能立刻導(dǎo)航至那個(gè)模塊。

特性:
1 使用@INC變量查找模塊;
2 如果找到的模塊只有一個(gè),就會(huì)立刻跳至那個(gè)模塊;
3 如果找到的模塊不止一個(gè)(多個(gè)版本),會(huì)顯示一個(gè)可供選擇的列表(就像命令補(bǔ)全一樣);
4 如果沒(méi)有找到模塊,則會(huì)給出高亮提示信息"Module '$module' not found";

函數(shù)代碼如下:
let g:perl_path_to = {}
function! GotoModule(module)
    let files  = []

    if !has_key(g:perl_path_to, a:module)
        let g:perl_path_to[a:module] = []
        let lib    = split(system("perl -le 'print join $/ => @INC'"), "\n")
        let module = substitute(a:module, '::', '/', 'g') . '.pm'

        for path in lib
            let path = path . '/' . module
            if filereadable(path)
                let g:perl_path_to[a:module] = g:perl_path_to[a:module] + [ path ]
            endif
        endfor
    endif

    let paths = g:perl_path_to[a:module]
    if empty(paths)
        echomsg("Module '".a:module."' not found")
    else
        let file = PickFromList('file', paths)
    endif
    execute "edit " . file
endfunction

function! PickFromList( name, list, ... )
    let forcelist = a:0 && a:1 ? 1 : 0

    if 1 == len(a:list) && !forcelist
        let choice = 0
    else
        let lines = [ 'Choose a '. a:name . ':' ]
            \ + map(range(1, len(a:list)), 'v:val .": ". a:list[v:val - 1]')
        let choice  = inputlist(lines)
        if choice > 0 && choice <= len(a:list)
            let choice = choice - 1
        else
            let choice = choice - 1
        endif
    end

    return a:list[choice]
endfunction


使用方法:
在.vimrc里加入:

" only works for Perl
au! FileType perl :noremap <buffer> :gm  :call GotoModule(expand('<cword>'))<cr>

" make sure we pick up the colon as part of our keyword
autocmd FileType perl setlocal iskeyword+=:

" don't kill 'undo' in other buffers
set hidden

使用此方法可以提高編寫(xiě)較復(fù)雜程序時(shí)的效率,平常寫(xiě)腳本的時(shí)候也可以隨時(shí)很方便地用它查看核心模塊的代碼。

原文:http://use.perl.org/~Ovid/journal/36602
(作者Ovid是O‘relly Perl Hacks的主要作者)

[ 本帖最后由 Nosferatu 于 2008-6-9 21:59 編輯 ]

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2008-06-09 23:23 |只看該作者
好東東,先收藏了……

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-06-10 08:19 |只看該作者
收藏

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
4 [報(bào)告]
發(fā)表于 2008-06-10 10:41 |只看該作者
我這里原本就可以的呀。
Normal 模式下摁 gf 就行……

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2008-06-10 11:58 |只看該作者
老大表打擊我。。。。
我剛才在as3里試了下你的gf,提示文件找不到

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2008-06-10 14:02 |只看該作者
原帖由 flw 于 2008-6-10 10:41 發(fā)表
我這里原本就可以的呀。
Normal 模式下摁 gf 就行……

我這也行
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP