服務(wù)器
小編給大家分享一下Vim使用相對(duì)行號(hào)的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
前言
大家都知道,我們使用Vim的一點(diǎn)好處就是,可定制性非常高,如果遇到任何讓自己感到不適的痛點(diǎn),都可以通過配置甚至開發(fā)一款插件來(lái)解決。開始使用Vim一段時(shí)間之后,我發(fā)現(xiàn)一個(gè)非?!胺慈祟悺钡牡胤剑篤im的很多命令都是需要查行數(shù)的。比如“刪除一個(gè)函數(shù)體”,你就要數(shù)數(shù)這個(gè)函數(shù)占了幾行(比如5行),然后按5dd。如果是使用鼠標(biāo)的話就不用數(shù)了,可以直接拖過去,但是鼠標(biāo)效率太低,既然學(xué)了Vim就不要讓手離開鍵盤了。
我總結(jié)了一套方案,幾乎所有的操作都可以不用數(shù)數(shù)來(lái)完成。
Vim支持兩種行號(hào),相對(duì)行號(hào)和絕對(duì)行號(hào)。相對(duì)行號(hào)是顯示每一行距離光標(biāo)所在行相隔多少行,絕對(duì)行號(hào)就是順序顯示每一行的序號(hào)。
Vim使用相對(duì)
set nu打開行號(hào)顯示, set rnu打開相對(duì)行號(hào)顯示(更多信息可以查看:help nu
和 :help rnu
。
效果如下:
打開行號(hào)顯示
打開相對(duì)行號(hào)的顯示
同時(shí)打開相對(duì)行號(hào)和絕對(duì)行號(hào)
可以看到,如果同時(shí)打開二者,就會(huì)在當(dāng)前行顯示絕對(duì)行號(hào),其他顯示距離當(dāng)前行的距離。
使用一段時(shí)間我發(fā)現(xiàn),在normal模式時(shí),經(jīng)常進(jìn)行對(duì)多行的操作,這時(shí)候如果使用絕對(duì)行號(hào),那么必然是要做減法,或者去數(shù)數(shù)來(lái)確定行的數(shù)量的。所以在normal模式應(yīng)該使用相對(duì)行號(hào)。0對(duì)我們來(lái)說(shuō)是沒有任何作用的,所以當(dāng)前行還是顯示行號(hào)吧。
然后一些常用的操作習(xí)慣都要相應(yīng)換一下:
刪除n行。3dd是刪除包括當(dāng)前行一共3行,但是因?yàn)轱@示的是相對(duì)行號(hào),我們要“刪除直到目標(biāo)行”的時(shí)候,要不自覺的+1,比如在上面最后一幅圖,要?jiǎng)h除直到“終端配色安裝”的內(nèi)容,就要按4dd。有沒有辦法不用計(jì)算,所見即所得呢?有的,d3j即可。command+直到目標(biāo)行號(hào)+方向。例如刪除直到上面“我對(duì)……”的內(nèi)容,就是d4k。其余的操作也是類似,例如移動(dòng)到下面4行,可以用4gg,也可以用g4j。其他還有yank操作等。替換范圍本來(lái)是使用絕對(duì)行號(hào)就可以,例如替換10-20行,就是:10,20s/xxx/yyy/g,但是由于我們normal模式顯示了相對(duì)行號(hào),那么就要根據(jù)相對(duì)行號(hào)操作了: :.+2,.+12s/xxx/yyy/g (假設(shè)當(dāng)前在第8行)。.在Vim中表示當(dāng)前行,要善于利用。由于我們顯示的是相對(duì)行號(hào),所以基本上和行號(hào)有關(guān)的操作都需要計(jì)算完成,用.加上/減去顯示的相對(duì)行號(hào)(所見即所得)在insert模式時(shí),我們一般都是編輯操作,不會(huì)對(duì)多行進(jìn)行判斷,此時(shí)可能對(duì)絕對(duì)行號(hào)更關(guān)心(寫到多少行了等)。所以可以監(jiān)聽一下事件,進(jìn)入編輯模式時(shí)使用絕對(duì)行號(hào),退出編輯模式進(jìn)入normal模式時(shí)使用相對(duì)行號(hào)。
設(shè)置如下:
set nu augroup relative_numbser autocmd! autocmd InsertEnter * :set norelativenumber autocmd InsertLeave * :set relativenumber augroup END
set nu是因?yàn)槲乙话愦蜷_一個(gè)文件不一定是編輯目的,瀏覽的話絕對(duì)行號(hào)更方便。這樣設(shè)置可以讓第一次進(jìn)入文件的時(shí)候使用絕對(duì)行號(hào),進(jìn)入編輯模式再退出到normal模式時(shí)再顯示相對(duì)行號(hào)。
這樣用了一段時(shí)間,感覺按下的鍵多了,但是腦子里需要的計(jì)算少了很多,還不容易出錯(cuò),挺好的。
最后附上我的.vimrc,供參考使用,不推薦盲目復(fù)制。
相關(guān)問題
在 Vim 7.4 之前的版本, 啟用相對(duì)行號(hào)當(dāng)前行號(hào)將變?yōu)?, 無(wú)法顯示正常的行號(hào), 在 Vim 7.4 中則可以正常的顯示當(dāng)前行號(hào)的同時(shí)來(lái)顯示相對(duì)行號(hào), 下面有兩張圖可以對(duì)比
Vim 7.3
Vim 7.4
從上面的圖片看來(lái), 啟用相對(duì)行號(hào)后可以很直觀的看到當(dāng)前行距離上面/下面某行的行數(shù)
可以使用以下指令啟用這個(gè)特性
set relativenumber
啟用相對(duì)行號(hào)后再也不用為了復(fù)制多行費(fèi)力氣的去數(shù)了
以上是Vim使用相對(duì)行號(hào)的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前題目:Vim使用相對(duì)行號(hào)的方法
標(biāo)題鏈接:http://sd-ha.com/article6/cjjhog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、軟件開發(fā)、網(wǎng)站制作、用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)