国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

練上一年再來總結的vim使用技巧

coolpail / 2366人閱讀

摘要:原文練上一年再來總結的使用技巧轉眼上的賊船有一年多了。一般來說,盡量多用是不錯的選擇。中的移動光標的方式有很多,我來舉幾個我實際使用過程中應用比較頻繁的技巧顯示相對行號。我無意間發現的一個十分實用的技巧,比顯示行號更好用。

原文:練上一年再來總結的vim使用技巧

轉眼上vim“賊船”有一年多了。從PHPC,都在用。想要真正用vim于日常的編碼工作,必然需要一些插件的支持。不過本文并不打算總結插件,筆者認為vim的兩個精髓:組合重復跟插件也沒有什么關系。

命令模式應該是常態

在大多數編輯器中,相信大家都喜歡敲幾個單詞就“保存(ctrl+s)”一下。而在vim中,保存是:w,而且需要在命令模式下進行。因此,往往要按Esc:w多達三個鍵才能保存。很多初學者十分詬病這個設計。事實上,經常使用Esc切換到命令模式才是vimer需要練就的第一個重要的反射行為。可以毫不夸張的說,只要你不在輸入文字,就應該切換在命令模式下,命令模式應該是常態!

HJKL讓右手歇歇,畢竟右手“很累”

這是vim中的光標上下左右的移動,剛開始使用vim的同學可能覺得這并沒有什么卵用,我用鍵盤上的上下左右就可以了!我們知道,vim的大部分快捷鍵需要在命令模式下完成,而且HJKL也是需要在命令模式下才生效的,如果你經常在插入模式下工作,當然不會去用HJKL。然而,當你真正開始更多的使用命令模式的時候,你會懶到不想把右手挪到“上下左右”那兒去,這個時候HJKL成為無需思考的反射行為。HJKL的好處就是減少了右手的位移距離。畢竟右手還有很多“事情”要做。

讓你的操作可重復

我們來舉個例子,假設如下文本

one two three four five six

我希望改成

"one","two","four","five","six"

首先光標定位在該行的行首,可使用^。然后鍵入f?(?表示空格),此時光標定位在one和two之間的空格處,然后鍵入c?","(修改空格,進入插入模式,然后增加","):

one","two three four five six

接著按;.,光標將先查找下一個空格,即重復f?,這個空格位于two和three之間,然后.可以重復上一次的修改操作,即c?","

one","two","three four five six

接著重復按若干次;.即可完成所有中間字符的修改:

one","two","three","four","five","six

最后應用IA,添加開始和最后的雙引號就可以了。

通過這個例子,vimer必須要領會的一個精髓是:讓你的操作可重復!!。如果上面的例子,我們用l或者->來定位空格的話,由于one、two、three這些單詞的長度是不確定的,我們無法事先知道需要按多少次l,所以l定位是不可重復的。而通過f可以重復我們的查找操作,從而精確的定位到空格。另外,如果我們通過xi","代替c?","也是不可重復的,因為xi","表示先刪除空格,然后進入插入模式后鍵入",",這樣就是兩次分開的修改操作,而最近的操作變成了“進入插入模式后鍵入","”,如果通過.重復這個操作,是無法刪除空格的。

這需要大量的實踐和練習,才能改掉鼠標流的思維定式。一般來說,盡量多用fcr是不錯的選擇。另外,盡可能的利用AaoO來進入插入模式,而不是每次通過i進入插入模式。

高效移動

光標移動效率是vim程序員達到甚至超過鼠標流程序員的關鍵技能。vim中的移動光標的方式有很多,我來舉幾個我實際使用過程中應用比較頻繁的技巧:

set relativenumber(顯示相對行號)。我無意間發現的一個十分實用的技巧,比set number顯示行號更好用。通過這個設置,行號的顯示會根據當前的光標的相對位置顯示成偏移數,并動態變化。這個好處是,可以利用數字+j 數字+k來進行多行跳轉,因為是編譯行數,所以數字不會太大。否則就算要向下移動10行,我們可能也需要用138gg

web:按照單詞進行前后光標跳轉,也可以組合數字進行跳轉,不過以我的經驗,與其去算要跳多少個單詞,不如多按幾次吧。

IA:移動到行首或行末的第一個字符處,并進入插入模式。

HML:光標分別跳轉到可視區域的最上面、中間、最下面。

Ctrl+DCtrl+U:有時,需要看的文本不在可視區域,通過這些組合進行上下翻頁。

^$0:光標移動到行首和行尾(0是絕對行首)。不過因為^$都需要同時按住shift,而且數字鍵我們往往難以盲打,所以我一般直接使用I+EscA+Esc

%:移動到與當前括號匹配的括號處。

gjgk:有時可視區域不夠寬,而一行的字符有很多,導致了wrap。那么通過jk是無法直觀的定位到同一物理行,卻不在同一個可視行里的位置,此時需要gjgk

fF:通過上面的例子,我們知道,f是find的意思,可以在一行內查找某個字符出現的位置,并直接跳轉過去。比如f<可以從當前光標開始向右,找到第一個<,并移動過去。F是向左查找。

;:重復上一次的f查找操作

.:重復上一次的修改操作,跟;可以說是好基友,經常用來實現一些簡單的重復操作,比錄制宏要簡單很多。經常有意識的使用這種簡單重復,是vimer編輯思路進階的分水嶺。

高效修改

vim的另一個優勢是高效修改。在vim下修改就要改掉傳統鼠標流的思維方式,切忌提到修改就按i。有很多高效的修改辦法,而且這些辦法往往是可重復的。下面舉一些我常用的例子:

r:替換模式,替換當前光標所在位置的一個字符。雖然你同樣可以i進入插入模式,然后刪掉那個字符,再輸入需要的字符,但這種操作是鼠標流思維方式。替換是一個可重復操作,多用沒壞處。

cwchange word可以刪除從當前位置到一個單詞的結尾,并進入插入模式。這種操作常用于修改一個變量。比如對于:int count=0;希望把count改成cnt,那么當光標位于c字符處的時候,按cw可直接刪除count,并進入插入模式。然后直接繼續輸入cnt即可。

cawchange a word可以刪除當前光標所在位置的單詞。對于int count=0;的例子,如果此時光標在count中間某處,比如u處,直接鍵入caw可以達到同樣的效果。所以caw更強大一些。

c$c^:舉一反三,可以猜到c$是從當前位置刪除到行尾,并進入插入模式。

ci"change inside "可以用于修改當前位置附近,在相同配對的"中的內容。比如對于const char *str="hello world";。當在雙引號中間的任意位置鍵入ci"可以直接清空字符串,并繼續輸入新的希望的字符串。

ci(ci[:舉一反三change inside ( change inside [

cit:這個比較特殊,可以直接編輯匹配的xml標簽中的內容!經常編寫html的童鞋可以熟悉一下。

yi"yank inside " 猜猜是啥意思?類似ci"只是把編輯操作編程復制操作,因為y是復制!是不是很強大。

ya"yank around " 復制整個字符串,包括雙引號。

ywyawdawd$...:好了,這些可以"發明"出來了。

oO:向下向上增加空行

uCtrl+r:undo和redo

上面的例子體現了vim組合的思想,很多命令可以通過組合得到不同的效果。

Visual模式是鼠標流后遺癥,不過也有妙用

vVCtrl+v是Visual模式,類似用鼠標選中一些文本。我在早期使用vim時候,十分喜歡用v,比如要刪除一個單詞,我往往會用vwd,試圖用vw選中一個單詞,然后d刪除。這種方式明顯是鼠標流的后遺癥。直到我學會上面介紹的一些技巧后,v已經很少用了。不過Ctrl+vBlock Visual模式,類似選中列,這個技巧有時很有用。比如有如下文本:

one
two
three
four

希望變成

"one, two, three, four"

首先將光標定位到one的o處,Ctrl+v3j$A,EscV3jJ。這一套連招下來,出來了:

one, two, three, four,

如果要合的行數很多,就比較有優勢了。問我怎么知道按3j,上文提到的set relativenumber幫到你。

總結

在開發效率上,不敢說vim優于IDE,不過vim的編輯和修改速度是比鼠標快的。使用vim的過程就是自我否定和自動重塑的過程,如果你不斷的學習技巧的話,編輯習慣會一再被推翻,一再重塑。不斷有新的理解注入到日常的工作中。最終會形成自己編輯風格。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/24900.html

相關文章

  • vim 入門筆記

    摘要:學習整理注意后文中帶尖括號的描述表示鍵盤按鍵,比如回車是指回車按鍵。輸入文件名回車即可進入編輯器編輯該文件。按鍵回車進入替換模式可以連續替換多個字符。所有的命令都必須敲回車鍵結束。 前言 本文的初衷 從知道 vim 開始我就有心學習并嘗試過幾次,每次都是暫時的心血來潮,最終全部不了了之,就連最基本的 vimtutor 我都是學個兩三節就半途而廢,所以這次干脆寫篇文章,利用幾次學習把這篇...

    Hegel_Gu 評論0 收藏0
  • 回望2017:一個前端從業者砥礪前行一年

    摘要:走過了這一年,公眾號的名稱前前后后改了三次,最后定格為閏土大叔。均價,這價格絕對屬于太原市最便宜的樓盤之一了。據售樓部的朋友說,未來兩年太原的房價還會迎來新一波的漲價潮,到了年,太原會承辦全國青少年運動會,簡稱青運會。 前言 從年前就嚷嚷著要走出去走出去,轉眼間已經到了年底依然在我的大太原呆著。年底了,不能免俗的我,也來寫一篇2017年度工作總結的文章,湊湊熱鬧。如果對你有一點點啟發,...

    dmlllll 評論0 收藏0
  • 回望2017:一個前端從業者砥礪前行一年

    摘要:走過了這一年,公眾號的名稱前前后后改了三次,最后定格為閏土大叔。均價,這價格絕對屬于太原市最便宜的樓盤之一了。據售樓部的朋友說,未來兩年太原的房價還會迎來新一波的漲價潮,到了年,太原會承辦全國青少年運動會,簡稱青運會。 前言 從年前就嚷嚷著要走出去走出去,轉眼間已經到了年底依然在我的大太原呆著。年底了,不能免俗的我,也來寫一篇2017年度工作總結的文章,湊湊熱鬧。如果對你有一點點啟發,...

    xietao3 評論0 收藏0
  • Java很傻,但是IDE很聰明

    摘要:執行效率很重要,但是在很多情況下,程序員的效率更重要的,而且語言的執行效率是可以發展的。,但是很牛逼,可以了解一些上的高級語言,比如。很聰明最大的好處,就是足夠成熟,市場占有率高。所以說,很傻,但是很聰明。碼農界有很多圣戰,。 對于編程 語言來說,什么是生產力?我覺得,更高的抽象層次就是生產力。 執行效率很重要,但是在很多情況下,程序員的效率更重要的,而且語言的執行效率是可以發展的。該...

    jeffrey_up 評論0 收藏0

發表評論

0條評論

coolpail

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<