<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Vim使用技巧總結

馬哥Linux運維 ? 來源:未知 ? 作者:胡薇 ? 2018-06-06 09:20 ? 次閱讀

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

命令模式應該是常態

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

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

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

讓你的操作可重復

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

onetwo 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

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

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

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

高效移動

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

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

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

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

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

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

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

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

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

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

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

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

高效修改

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

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

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

caw:change 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 "復制整個字符串,包括雙引號。

yw、yaw、daw、d$…:好了,這些可以” 發明” 出來了。

o、O:向下向上增加空行

u、Ctrl+r:undo 和 redo

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

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

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

onetwothreefour

希望變成

"one, two, three, four"

首先將光標定位到 one 的 o 處,Ctrl+v,3j,$,A,,,Esc,V,3j,J。這一套連招下來,出來了:

one, two, three, four,

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

總結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • VIM
    VIM
    +關注

    關注

    0

    文章

    129

    瀏覽量

    15207
  • PHP
    PHP
    +關注

    關注

    0

    文章

    452

    瀏覽量

    26500

原文標題:練了一年再來總結的 Vim 使用技巧

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    12個超實用的vim編輯技巧

    vim 是一個很好用的編輯器,應用十分廣泛。但關于 vim,總有一些你不知道的事情,我們需要持續不斷的學習。
    發表于 11-25 09:26 ?803次閱讀

    關于linux vim命令 總結(二)

    文件的字符數:w :write的縮寫:edit(e) 打開,編輯ZZ保存并退出zz將光標所在行移至窗口中間:q退出vim -R file 用只讀模式打開file unix中view file等效,通過w
    發表于 09-04 10:27

    關于linux vim命令 總結(二)

    文件的字符數:w :write的縮寫:edit(e) 打開,編輯ZZ保存并退出zz將光標所在行移至窗口中間:q退出vim -R file 用只讀模式打開file unix中view file等效,通過w
    發表于 09-10 10:38

    linux vim命令總結

    命令的參數 如 :write !wc 返回當前文件的字符數 :w :write的縮寫 :edit(e) 打開,編輯 ZZ保存并退出 zz將光標所在行移至窗口中間 :q退出 vim -R file 用只讀模式
    發表于 07-03 00:27

    VIM for windows

    VIM for windows Vim目前已經有類Unix版和Windows版,盡管vim較vi已經改良了不少,但是初次使用還是會一頭霧水,不知如何操作,所以學習vim要首先過2關。
    發表于 03-13 14:41 ?30次下載

    vi/vim使用進階

    vi/vim使用進階
    發表于 10-29 11:00 ?28次下載
    vi/<b class='flag-5'>vim</b>使用進階

    VIM高級技巧

    VIM高級技巧
    發表于 10-29 11:06 ?9次下載
    <b class='flag-5'>VIM</b>高級技巧

    總結使用 Vim 的過程中不得不了解的一些指令和注意事項

    Vim 是一個上古神器,本篇文章主要持續總結使用 Vim 的過程中不得不了解的一些指令和注意事項,以及持續分享一個前端工作者不得不安裝的一些插件,而關于 Vim 的簡介,主題的選擇,以
    的頭像 發表于 12-27 16:44 ?4630次閱讀

    干貨:兩個關于Vim的使用問題及小技巧

    最近在使用 VIM 時遇到兩個新的問題,覺得還很挺有價值的?,F在將處理方法總結后,分享給大家。
    的頭像 發表于 08-31 12:09 ?2741次閱讀
    干貨:兩個關于<b class='flag-5'>Vim</b>的使用問題及小技巧

    pathogen.vim Vim插件

    ./oschina_soft/vim-pathogen.zip
    發表于 05-24 10:21 ?0次下載
    pathogen.<b class='flag-5'>vim</b> <b class='flag-5'>Vim</b>插件

    vim-go Vim的Go開發插件

    ./oschina_soft/vim-go.zip
    發表于 05-24 09:42 ?1次下載
    <b class='flag-5'>vim</b>-go <b class='flag-5'>Vim</b>的Go開發插件

    vim-switchtoinc Vim插件

    ./oschina_soft/vim-switchtoinc.zip
    發表于 05-24 09:19 ?3次下載
    <b class='flag-5'>vim</b>-switchtoinc <b class='flag-5'>Vim</b>插件

    vim-vala vim的vala擴展

    ./oschina_soft/vim-vala.zip
    發表于 05-24 16:57 ?3次下載
    <b class='flag-5'>vim</b>-vala <b class='flag-5'>vim</b>的vala擴展

    Vim指令總結

    對于未使用過 Vim 的朋友來說,可能還無法體會到這種感覺。由于使用 Vim 有一定的學習成本,只有做到非常熟練的程度才能感受到它帶來的快捷。 這里我就自己日常有使用過的 Vim 指令做一個
    的頭像 發表于 11-01 10:15 ?317次閱讀

    linux怎么保存退出vim

    在Linux系統中,使用vim作為編輯器是非常常見的。vim是一個強大的文本編輯器,擁有豐富的功能和快捷鍵。保存并退出vim可以通過以下步驟完成: 打開vim編輯器:在Linux命令行
    的頭像 發表于 11-27 14:19 ?5209次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>