摘要:完整配置見可以記錄我們最近訪問的位置。下方是比當(dāng)前位置新的位置,使用進(jìn)行跳轉(zhuǎn)。再多的內(nèi)容,我也記不住另外,的標(biāo)記功能對(duì)代碼瀏覽也非常方便,有時(shí)間再介紹吧。
完整 Vim 配置見:space-vim
Vim 可以記錄我們最近訪問的位置(location)。每個(gè)位置(position)(position 包括了文件名,列號(hào),行號(hào))會(huì)被一個(gè) jump list (跳轉(zhuǎn)表)中,每個(gè)窗口(window)都有一個(gè)多帶帶的 jump list,它可以記錄最近 100 個(gè)訪問的位置。
像搜索(search), 替換(substitue)和標(biāo)記(mark)的命令都被認(rèn)為是一個(gè)“jump”(跳轉(zhuǎn)),但是在一個(gè)文件中進(jìn)行滾動(dòng)并不是一個(gè) jump. 詳見 :h jump-motions.
之所以了解 jumplist,是因?yàn)樵诳?go 的項(xiàng)目時(shí),經(jīng)常查看代碼的定義(gd,使用 vim-go 插件),這時(shí)就可以使用 Ctrl-I 和 Ctrl-O 進(jìn)行跳轉(zhuǎn)??赐甓x后,Ctrl-O 就可以很快跳回來。
如何使用使用 :jumps 來顯示當(dāng)前窗口的 jump list,由于太長(zhǎng),下圖并未顯示完,使用 Vim 的常見快捷鍵進(jìn)行滾動(dòng),j,k,G 等等:
使用 Ctrl-o 跳轉(zhuǎn)到上一個(gè)位置,Ctrl-i 跳轉(zhuǎn)到下一個(gè)位置。Ctrl-o 和 Ctrl-i 前面也可以加上編號(hào),進(jìn)行精確跳轉(zhuǎn),這個(gè)編號(hào)就是上圖中 jump 列的數(shù)字。跳轉(zhuǎn)以后再查看 jump list, 你會(huì)發(fā)現(xiàn)有個(gè) > 指示了當(dāng)前位置,一開始的時(shí)候它是在 jump list 的頂部,如果你的 jump list 比較長(zhǎng)的話,可能需要拖到底部(快捷鍵 G)才能看到:
上圖中可以看出,行號(hào)為 0 的上下方都是從 1 開始編號(hào),它們分別代表了比當(dāng)前位置更舊或新的位置。下方是比當(dāng)前位置新的位置,使用 Ctrl-I 進(jìn)行跳轉(zhuǎn)。上方是比當(dāng)前位置舊的位置,使用 Ctrl-O 進(jìn)行跳轉(zhuǎn):
Ctrl-I 會(huì)跳轉(zhuǎn)到行號(hào)為 0 的下方編號(hào)為 1 的位置,也就是 1 21 5 type MessageType uint16.
Ctrl-O 會(huì)跳轉(zhuǎn)到 1 420 24 ~/go/src/github.com/lightningnetwork/lnd/fundingmanager_test.go
在 Ctrl-I 和 Ctrl-O 同樣可以加上數(shù)字跳轉(zhuǎn)到對(duì)應(yīng)位置。比如 4 然后 Ctrl-I 會(huì)跳轉(zhuǎn)到 5 14 5 ~/go/src/github.com/lightningnetwork/lnd/lnwire/accept_channel.go.
簡(jiǎn)化操作前面說了可以使用位置的編號(hào)加上 Ctrl-I 或 Ctrl-O 跳轉(zhuǎn)到對(duì)應(yīng)位置,Ctrl-I 或 Ctrl-O 這個(gè)操作其實(shí)可以省略。比如,輸入 4 向后跳轉(zhuǎn)到第 4 個(gè)位置,輸入 +4 向前跳轉(zhuǎn)到第 4 個(gè)位置:
function! GotoJump() jumps let j = input("Please select your jump: ") if j != "" let pattern = "vc^+" if j =~ pattern let j = substitute(j, pattern, "", "g") execute "normal " . j . "" else execute "normal " . j . " " endif endif endfunction
你可以選擇將這個(gè)函數(shù)放到你的 .vimrc 中,:call GotoJump() 進(jìn)行使用。在 space-vim 我將它放在了 util.vim, 可以這樣進(jìn)行調(diào)用::call spacevim#util#GotoJump(), 再映射一個(gè)快捷鍵就能比較方便地使用了:
nnoremapgj :call spacevim#util#GotoJump()
其實(shí)講了這么多,只需要學(xué)到 C-i 和 C-o 這兩個(gè)快捷鍵就行了,一個(gè)是跳轉(zhuǎn)到上一個(gè)位置,一個(gè)是跳轉(zhuǎn)到下一個(gè)位置。再多的內(nèi)容,我也記不住 :).
另外,Vim 的 mark(標(biāo)記)功能對(duì)代碼瀏覽也非常方便,有時(shí)間再介紹吧。
參考:
Jumping to previously visited locations
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/24968.html
摘要:為啥需要,因?yàn)槟芨旄奖愕倪M(jìn)行代碼提示與代碼補(bǔ)全,每個(gè)人的精力都是有限的,能打一個(gè)字母出來結(jié)果就絕對(duì)不打第二個(gè)。 tools zsh為啥需要zsh,因?yàn)槟芨旄奖愕倪M(jìn)行代碼提示與代碼補(bǔ)全,每個(gè)人的精力都是有限的,能打一個(gè)字母出來結(jié)果就絕對(duì)不打第二個(gè)。 plugins=(git brew mvn svn svn-fast-info sbt go pip zsh-syntax-high...
摘要:插件鍵位映射技巧性的配置等等都是錦上添花,它們有助于你進(jìn)一步提高效率以及個(gè)性化你的工作環(huán)境,但是對(duì)于哲學(xué)的理解幫助甚少。為你開啟語(yǔ)法高亮。你可以自定義各種語(yǔ)言的語(yǔ)法高亮,無(wú)非就是根據(jù)這些規(guī) 如果沒有挑戰(zhàn),人生將多么無(wú)趣! 兩種副本 在我的硬盤上總是保留著(至少)兩份 Vim 的配置文件。其中一份是所謂完全正式版,它的文件名是 .vimrc,到本系列結(jié)束的時(shí)候,我們將了解其中...
摘要:效果效果就像優(yōu)酷綜藝頻道頁(yè)面的圖片輪播。本屌之前做過這個(gè)參見仿優(yōu)酷頻道首頁(yè)的圖片切換效果不過用的是類似的庫(kù)做的。 roundabout效果 效果就像優(yōu)酷綜藝頻道頁(yè)面的圖片輪播。本屌之前做過這個(gè)roundabout,參見仿優(yōu)酷頻道首頁(yè)的圖片切換效果,不過用的是類似jquery的庫(kù)做的。盡管js代碼不到200行,但還是顯得有點(diǎn)復(fù)雜。于是乎,本屌盤算著可不可以用更少的代碼完成這個(gè)效果。順便說...
摘要:效果效果就像優(yōu)酷綜藝頻道頁(yè)面的圖片輪播。本屌之前做過這個(gè)參見仿優(yōu)酷頻道首頁(yè)的圖片切換效果不過用的是類似的庫(kù)做的。 roundabout效果 效果就像優(yōu)酷綜藝頻道頁(yè)面的圖片輪播。本屌之前做過這個(gè)roundabout,參見仿優(yōu)酷頻道首頁(yè)的圖片切換效果,不過用的是類似jquery的庫(kù)做的。盡管js代碼不到200行,但還是顯得有點(diǎn)復(fù)雜。于是乎,本屌盤算著可不可以用更少的代碼完成這個(gè)效果。順便說...
閱讀 3087·2019-08-30 15:56
閱讀 1242·2019-08-29 15:20
閱讀 1580·2019-08-29 13:19
閱讀 1489·2019-08-29 13:10
閱讀 3392·2019-08-26 18:27
閱讀 3077·2019-08-26 11:46
閱讀 2241·2019-08-26 11:45
閱讀 3769·2019-08-26 10:12