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

資訊專欄INFORMATION COLUMN

Vim 的哲學(四)

xiao7cn / 2573人閱讀

摘要:的哲學第四篇姍姍來遲,狗血的原因我就不多說了,好消息是我將為這個系列帶來一些動態演示。所以目前為止你學會上述四個動作指令就足夠了。以詞為單位使得我們可以更精確也是更具語義化的移動光標,并且要比逐個字符的移動要快得多。

Vim 的哲學第四篇姍姍來遲,狗血的原因我就不多說了,好消息是我將為這個系列帶來一些動態演示。原本我打算錄視頻的,但是文章都寫了那么些篇了,現在再錄視頻似乎晚了些,所以我研究了一下如何錄制高質量的 GIF 動畫(第三方軟件都不好用,最后我還是用 QuickTime 和一段腳本來完成錄制,挺酷的~)。接下來先奉上第一彈:

查漏補缺

上一期的基礎配置我遺漏了一個蠻重要的選項:shiftround,這個選項真的很貼心很好用,遺憾的是官方文檔對此語焉不詳。我特意 Google 了一下才發現挺少有人解釋這個選項的。現在我也忘記了當初我是怎么知道它的,然后我發現用文字也還挺難解釋清楚,所以還是看動畫吧:

round 在這里應該是取整的意思。當你的縮進不成倍時,開啟這個選項將會讓 Vim 自動幫你把周圍的縮進化零為整,你就不需要手動去填/刪空格了。順便提前講一下,縮進的指令是 <> 鍵,它們支持移動指令(馬上講到),也支持數字前綴。對當前行執行縮進是 <<>>,也就是連按兩次。我們在以后會詳細介紹關于縮進的知識。

OK,加上它在你的基礎配置里,我們開始新的旅程!

移動與編輯

現在我們知道使用 Vim 的一個很重要的原則就是遠離鼠標,遠離可視化的定位裝置(當然除了鍵盤以外),原因我就不再贅述了。在此原則之下,必然要有一些方式來幫助我們選中目標然后做出我們希望的更改,也就是移動和編輯。

在常規模式里有兩個很重要的概念,一個叫做“動作”(Motions),另一個叫做“操作”(Operators)。動作,是指你能讓光標移動到哪里,而操作則需要結合動作來決定你可以對文本做什么。通過二者的結合,我們可以逐漸體會 Vim 是如何貫徹保持簡單這一原則的。

hjkl 雖然簡單,但是在很多場合之下它們太沒效率了,對么?從現在開始我希望你記住:我們通常不用 hjkl 做大量的光標移動。如果你發現你經常抽瘋似的按這四個鍵在屏幕里來回移動,那你就已經錯了!這四個鍵真正的主要用處是作為其他動作和操作的輔助鍵來使用的,隨著我們的深入學習你會越來越理解這一點。

那么除此之外我們還有什么選擇呢?

橫向移動 :help left-right-motions

當我們以行/段為單位來審視我們的文本時,Vim 為我們提供了一些橫向移動的快捷動作。

移動指令 移動效果
0 移動光標至行首
$ 移動光標至行尾
^ 移動光標至行首的第一個非空白符的字符
g_ 移動光標至行尾的最后一個非空白符的字符
f{char} F{char} 向前(右)或向后(左)移動光標至指定的字符({char})處,光標停留在該字符之上
t{char} T{char} 向前(右)或向后(左)移動光標至指定的字符({char})處,光標停留在該字符前/后面

通過上面這個表格,我們可以獲取到以下信息:

Vim 的許多指令都是成對兒的(非常重要),學習各種指令時嘗試成對兒去練習會事半功倍。

空白符(空格,Tab)在 Vim 里是很重要的,許多命令都有不同的版本來應對有/沒有空白符的狀況。這主要是為了滿足不同的人群習慣,比如說碼字兒的不是很在乎多一兩個空格,但是寫代碼的就不一樣了。

有些命令脫胎于正則表達式(相信你注意到了),所以結合正則來學習也能幫助你理解它們。

最后兩行的那幾個移動指令可能有一點不好理解,但是它們實在是太有用了,請你親自試一下。以后我再深入介紹它們。

這還沒完,對于橫向移動來說,最麻煩的是當“回繞”(wrap)出現的時候。所謂回繞是指,當一行(段)的字符數目超過屏幕的可視寬度范圍時,編輯器會將超出的部分自動轉移到下一行來顯示,但是這并非換行,也就是說沒有插入換行符,只是在顯示上不讓字符超出屏幕的最大寬度范圍而已。

這個特性當然不是 Vim 特有的,幾乎所有的編輯器都支持回繞,可是 Vim 對待回繞是和其他編輯器完全不同的,尤其是在編輯長文檔時會讓你覺得有些古怪。我不會在本章詳細介紹關于回繞的一切,因為本系列面向的讀者主要是程序員。對于編寫代碼這樣的工作,只要你遵循良好的編碼規范(你應該這么做),那就很少會出現應對回繞的情況。所以目前為止你學會上述四個動作指令就足夠了。未來的某一天我會專門寫一篇如何打造專業的 Markdown 編輯功能,在那時候我們再回過頭來好好談談回繞。

現在我列出橫向移動時如果遇到回繞行我們可以做什么,這樣你可以自己試一下:

移動指令 移動效果
gh gj gk gl 讓光標在回繞行內做四方向移動
g0 移動光標至當前回繞行的行首
g$ 移動光標至當前回繞行的行尾
g^ 移動光標至當前回繞行的行首的第一個非空白符的字符
gm 移動光標至當前回繞行的中間位置(或盡可能接近中間的位置)
關于 g

你或許已經注意到 g 鍵的多次出現了,似乎它和其他指令相互配合可以產生許多新指令。沒錯,在 Vim 中有那么幾個“萬能的”指令修飾鍵,g 是其中之一。如果你好奇還有多少指令是用 g 來修飾的,你可以鍵入 :help g 來查看一個列表。另外你應該知道這份列表其實是索引文檔的一部分,你可以時常打開索引(:help index.text)來考察下自己對 Vim 到底有多熟悉。

縱向移動 :help up-down-motions

縱向移動的指令比較多,我還是先介紹幾個簡單并且最有用的:

移動指令 移動效果
gg 讓光標跳轉到文檔的最開始處
G 讓光標跳轉到文檔的最后一行
{count}G :{count} 讓光標跳轉到指定的行號,即 {count} 所代表的行號
{count}% 讓光標跳轉到指定的百分比位置,比如說第一行是 0%,最后一行是 100% 等
H 讓光標移動到當前屏幕的頂部(High Position),不滾屏
M 讓光標移動到當前屏幕的中部(Middle Position),不滾屏
L 讓光標移動到當前屏幕的底部(Low Position),不滾屏

{count} 是一個前綴標記,意思是這個指令前面可以追加數字,比如說如果你鍵入 25G,那么光標就會移動到當前文檔的第 25 行去。這個特性非常重要,Vim 的強大和靈活在很大程度上都仰仗類似的前綴特性。

G{count}G 其實是同一個指令,只是帶上數字前綴與否會產生不同的效果,所以我分開寫了。這是第一次,一旦你了解了這個特點,以后我就沒必要分開了。

ggG 是一對經典的搭檔,許多非常有用的操作都是它們倆配合完成的。舉個例子,《Vim 的哲學》所有的文字都是在Vim 里完成的,每一次到最后我都要把它們復制粘貼到 SegmentFault 博客的發表頁面做最后的檢查并且發布,如何全部復制過去?有很多辦法,我一般選擇如下兩種:

如果我使用 MacVim(GUI 環境),那么我先 command + a,然后 "+y 或者 "*y

如果我使用 CLI Vim(命令行環境),就變成一串指令:gg"+yG,拆開看:gg + "+y + G

喂喂,command + a 是全選吧,這是 Vim 的指令嗎?你別忽悠我喔~

我可沒有說你只能用 Vim 的內置指令呀,了解你所處的環境,在不影響效率,不打亂節奏的前提下善于利用一切可以利用的工具,這不正是極客的特質之一嗎?只不過我不是每次都有機會用到 MacVim 的,所以 gg + G 的經典組合還是必須要掌握的。至于 "+y,這個涉及到寄存器(:help registers)的知識,我們稍后就會講到,別急。

以詞為單位的移動 :help word-motions

hjkl 是以字符為單位來移動的,橫向和縱向移動基本上都是以句/段為單位來使用的,然而有些情況下我們需要的是介于二者之間的移動單位,也就是以詞為單位。以詞為單位使得我們可以更精確(也是更具語義化)的移動光標,并且要比逐個字符的移動要快得多。

這里所說的詞特指的是像英語那樣的以空格(有時候也會是別的符號)為分隔符的詞——很遺憾,中文分詞是很大的挑戰,Vim 沒有內置這一功能。像這樣的詞都可以分出詞頭和詞尾,比如 word 這個詞,詞頭是 w,詞尾是 d

于是在 Vim 中的詞組移動也按照詞分頭尾的特性分成了兩組:

移動指令 移動效果
w b 向前(右)或向后(左)移動光標至下一個詞組的詞頭位置
e ge 向前(右)或向后(左)移動光標至下一個詞組的詞尾位置

一些朋友喜歡尋找每一個指令對應的含義,這樣有助于形象記憶。事實上,這些含義也不是我編造出來的,內置的文檔里都有很詳細的描述,比如說上面這幾個分別是:

w:Words forward

b:words Backward

e:forward to the End of word

ge:backward to the End of word

你可能在想:我干嘛要關心詞頭和詞尾,好麻煩啊!這個問題其實無關于 Vim 的哲學,而是語言的哲學。

你看,咱們的漢語和英語是完全不同的兩個語種。在漢語里詞與詞的界限是靠意義來劃分,書寫形式則不太重要。用漢語寫一句話,你可以在詞組之間添加空格或者不添加空格,基本上不會對讀者產生影響(除了個別會產生歧義的特例)。而英文及其他類似語言則不然,它們加或不加空格的差別大了去了!一段英文如果沒有空格,那幾乎就是無法閱讀的。因此,對于母語為類似語種的人群來說,空格所劃分出的詞頭與詞尾是自然而然,司空見慣的事情,他們一點也不會覺得奇怪。不幸的是,作為程序員的我們也(被迫)得使用英語作為我們的主要書寫語言,因此你必須習慣去辨識和使用詞頭與詞尾。一旦你習慣了,你會發現它們非常有用。

為了讓你看到正確使用詞頭詞尾的效果,我放一張圖給你對比一下差別。在這張圖里,我分別演示了四種操作:

在句首,向右刪除兩個單詞,使用詞頭作為動作指令(w

在句首,向右刪除兩個單詞,使用詞尾作為動作指令(e

在句尾,向左刪除兩個單詞,使用詞頭作為動作指令(b

在句尾,向左刪除兩個單詞,使用詞尾作為動作指令(ge

每一步操作之后,注意觀察光標停留的位置和最終的效果:

這些結果或許是你期望的,也可能不是,但這不要緊,沒有哪一種是絕對正確或錯誤的,重要的是你需要了解它們之間的差別,于是你可以在必要的時候選擇正確的方式。

不過故事還沒完,以上四個指令各自還有一個變體,分別是:WBEgE。要了解它們的作用,我們得先聊一下詞的定界符。

對于詞和詞之間,空格是唯一的區隔標準嗎?很顯然不是。像這樣的詞:i_am_a_word,Vim 會視為 1 個詞,但是 i-am-a-word,Vim 則會視為 7 個詞!這是因為 Vim 允許你為其指定可以被視作詞組定界符的字符,于是當 Vim 遇到這些字符的時候,就會認為是一個詞的結束。默認情況下,_ 不是定界符,所以它會被視作一個詞的組成部分。

然而有些時候我們希望把這些定界符也當作詞組的一部分,這樣我們可以移動的快速一點,這時大寫版本的詞組移動指令就派上用場了,它們永遠都只把空白符(空格、TAB、EOL)視作詞組的定界符。

你會覺得自己定義定界符很酷吧?我會把它放在高級設置那一篇來講。

基礎編輯 :help operator

Vim 內置了 15 個編輯指令(還有一些變體),但是一般來說我們用不到那么多。在本節我們來學習其中的五種(共計 10 個):

刪除 :help d

如果你把光標對準某個字符,然后按下 d(delete),你會發現什么都沒有發生?不要驚訝,編輯操作是要配合移動指令來干活的,我之前花大力氣介紹一堆移動指令不是漫無目的的不是?

OK,精彩的來了。當你按下 d,Vim 會說:“好的伙計,你想要刪除對吧?接下來請告訴我你要刪什么?”

如果你要刪一個詞,按下 dw,也就是 delete word

如果你要刪除兩個詞,按下 d2w 或者 2dw,它們的效果是一樣的,但是它們代表的含義略有差別:

d2w 意思是:刪除 -> 2 個 -> 詞

2dw 意思是:2 次 -> 刪除 -> 1 個詞

在這個例子里,兩種操作的結果不會產生歧義,所以你能得到一樣的效果。但是以后你會發現在某些特定的條件下,數字前綴在不一樣的地方會產生不一樣的效果(不只局限于刪除操作)。所以,正確的理解操作的含義是有必要的,請記住:

  

理解操作的含義,而不是背誦操作的順序。就好像你說話說的是你想要表達的意思,而不是字詞的某種排列組合。有些時候你顛倒字詞的順序不會影響你要表達的意思,因為不存在歧義,但有些時候則正好相反,切記切記!

如果我要刪除一整行怎么辦?簡單:dd

那如果我想要從光標的位置開始一直刪除到行結束呢?那還用我教你?d$!不過 Vim 還有另外一個版本等價于 d$,它是:D

哦,那這么說如果我使用 0d$ 或者 0D,就是和 dd 等價的咯?

啊哈~聰明的童鞋,很抱歉你錯了!但是不怪你,這是一個很重要的區別,我們來多帶帶看一下示范:

看明白了嗎?其實差異是非常明顯的,dd 是連同行尾的行結束符(EOL)一起刪除的,所以粘貼的時候也會連著行結束符一起粘貼;而 0D0d$ 則不會包含行結束符。

你可能還納悶呢,不是演示刪除的嗎?為什么刪掉的東西還能再粘貼回來呢?嗯,可能刪除這個詞不太恰當,如果改叫剪切是不是忽然就覺得貼切起來了?

Vim 的刪除操作和我們常見的剪切非常相似,事實上 Vim 的刪除指的是從你的眼前把目標文字移除到寄存器中,之后你還可以從寄存器里把刪除的部分再粘貼回來。Vim 擁有一堆各式各樣的寄存器,擅于使用寄存器可以讓你的編輯工作變得異常輕松。今后我們會多帶帶介紹寄存器的進階使用。

讓我來問你一個問題:如果要刪除一個字符該怎么辦?你或許已經了解到 x 可以刪除光標所在的那個字符,X 可以刪除光標左邊的那個字符,但是你是否知道這兩個功能也是從 d 演化出來的呢?試著找找答案吧。

改寫 :help c

在你執行完刪除之后,緊接著按下 i(insert),你就等于在改寫之前刪除的內容了。如何把這兩步簡化成一步?答案就是 c(change)了。對于 c,真的沒什么好講的,你學會了 d 就等于學會了 c,因為 c 就等于 d 完了緊接著 i 而已。

而且其他相關聯的操作也是類似的,比如說:

c2w:改寫兩個詞

cl:改寫光標所在位置的字符,并且 s 等價于 cl

cc:改寫光標所在的一整行,并且 S 等價于 cc

c^c$:從光標所在位置開始一直改寫到行頭/行尾,并且 C 等價于 c$

s 比較少用,因為通常改一個字符我們會使用 r,也就是替換(replace),但是 s 在編輯中文的時候有妙用,容我在這里賣個關子,等到打造專業 Markdown 編輯器的時候再說(實在是不能都說了,要不然這篇結束不了了)。

Scc 多節省一次按鍵,而且也比較好按(在標準鍵位上),所以推薦用 S 來代替 cc

復制 :help y

復制是幾個基礎編輯操作里怪癖略多的一個。首先是它的命名,yyank 的首字母,但是 yank 又是什么?它和拷貝(復制)有什么關系呢?

這也和寄存器有關。你看,Vim 的復制/剪切(刪除)/粘貼操作都是基于它底層的寄存器的,由于 c 已經被改寫(change)占用了,而 Vim 的復制實質上是把目標文本拉拽(yank)到寄存器中備用,所以……好了你知道了就是了,咱不解釋那么多,反正 y 就是復制了,愛咋咋地~

另外一個怪癖出在 Y 身上,按照之前刪除和改寫的經驗,你一定會認為 Y 就等同于 y$ 唄,(Vim 亂入:“呵呵,圖樣圖森破!你以為我會讓你這么輕易就掌握訣竅嗎,少年?”)可是很不幸你又錯了。這一回,Y 又和 yy 等價了……

我一直都沒鬧清楚為什么到了復制這里就和刪除/改寫不一樣了,就連官方的幫助文檔都是這么說的:

  

如果你希望 Y 是從光標處復制到行尾(這樣更合乎邏輯,不過不兼容 Vi),你可以使用 :map Y y$

看起來唯一的原因就是為了和老 Vi 兼容,但是我們完全不在乎這一點!后面的 :map Y y$ 是鍵位映射,雖然我們還沒講到,不過這一句你已經可以把它放到你的 .vimrc 里了,重啟 Vim 之后你會發現 Y 的表現和 C D 它們保持一致了,謝天謝地!

粘貼 :help p

粘貼就單純多了,只有兩個指令:

操作指令 移動效果
p 自光標所在位置向右粘貼默認寄存器里的內容
P 自光標所在位置向左粘貼默認寄存器里的內容

默認寄存器里的內容取決于你在粘貼前最后的編輯動作,有可能是刪除或復制的一段文本,也有可能是其他的。由于我們還沒有詳細介紹強大的寄存器功能,你或許會偶爾感到有些不便,在這里我先介紹一個最常用的技巧:

有時候,我們需要完成如下操作:

在某處復制或刪除(剪切)了一些文本

在另外一處刪除一些文本

把之前復制或刪除(剪切)的文本粘貼到這里

你看,這實際上是要用 A 處的文本來替換 B 處的文本,但由于默認寄存器只保留了最后一次的復制/刪除(剪切)內容,所以當你完成第 2 步的時候,你在第 1 步準備好的文本已經沒了……大多數人是這么做的:

在某處復制或刪除(剪切)了一些文本

來到另外一處,先把這些文本粘貼到空白的地方

把需要替換的文本刪除

清理多余的空白(如果需要的話)

實際上,我們可以讓 Vim 不把指定的內容放入默認寄存器,這樣就不會覆蓋預先準備好的內容了,這等同于徹底刪除而不是剪切。Vim 的默認寄存器是 ""(也叫匿名寄存器,:h quotequote),它保存常規的復制/刪除等操作的內容,Vim 還有一個名字很酷的寄存器叫做:黑洞寄存器(Blackhole Register,:h quote_),它的按鍵是 "_。如果你在鍵入任何操作之前先輸入 "_,操作的結果將不會被任何寄存器保留下來,就好像丟入了一個深淵黑洞,再也回不來了……(好傷感 T_T)

因此,我們可以這么玩:

在某處復制或刪除(剪切)了一些文本

使用黑洞寄存器刪除需要替換的內容,例如刪除一行:"_dd

直接粘貼,搞定!

我把這個過程也錄了下來,你可以對照看看:

我真是愛死這玩意兒了!不過你要知道,就上例而言黑洞寄存器不是唯一的辦法,說不定你更喜歡別的操作組合,比如下面這個:

這一套“組合拳”沒有用黑洞寄存器,它的好處是如果我反悔了,我還可以撤銷之前的操作把被替換的內容找回來。整個過程的按鍵順序是這樣的:y$ -> gt -> gP -> D

請允許我用更加具有語義的方式來重復一遍上面的操作:

y$:從光標所在位置(行首)復制到行尾(不包括換行符)

gt:切換至下一個標簽頁

gP:自光標位置向左粘貼剛才復制的內容,結束之后把光標向右移動一個字符(這就是 g 的作用,為了把末尾的 . 保留住。你也可以使用 Pl 實現一樣的目標)

D :自光標位置刪除到行尾

我希望你理解我這樣重復一遍的原因,它包含了體現 Vim 哲學的三個側面:

每一步都保持簡單的顆粒操作

從不死記硬背,而是去表達你的意圖,用你自己的方式

條條大路通 Vim,何必死撞一棵樹?

好吧,第三點純粹是我在胡扯,哈哈。

大小寫轉換

大小寫轉換其實不算什么大事,本來我也猶豫還要不要介紹一下,但是考慮到這個在編程的時候還挺有用的,于是索性一并說了吧,反正也不多……

操作指令 移動效果
~ 轉換光標所在字符的大小寫(嚴格來說,這不是一個操作指令)
g~ 轉換字符的大小寫(這個才真的是)
gu 強制轉換成小寫
gU 強制轉換成大寫

解釋一下頭兩個,~ 不是操作指令,是因為它沒辦法和移動指令結合,它就只會轉換當前光標所在位置的那個字符。如果你有多個字符需要轉換,你就只能一個一個按過去。g~ 才是轉換大小寫的正式版,它可以結合移動指令。比方說按下 g~3j 會把往下 3 行的字符大小寫都轉換了(小寫變大寫,大寫變小寫)。不過 Vim 有一個選項叫做 tildeop(:h tildeop),它默認是關閉的,如果你開啟它,~ 就會變成和 g~ 一樣了。這選項我記得很熟,因為我經常在團隊里做重構工作,這種改寫命名的活兒一再重復,我索性就把 ~ 變成真正的操作指令了。

另外,毫無意外的,它們幾個都有直接操作當前一整行的快捷版本,分別是:g~~ guu gUU

  

趣味知識:你知道 ROT13 加密編碼嗎?這可能是世界上最簡單的加密手段了,有意思的是 Vim 也內置了 ROT13 編碼/解碼功能。閑來無事的時候可以拿來逗別人玩哦!切換 ROT13 編碼/解碼的操作指令是:g?(:help g?)

縮進與排版
操作指令 移動效果
gq 自動應用排版規則
gw 自動應用排版規則(光標位置不變)
= 自動應用縮進規則
< > 手動應用縮進規則(左右兩個方向)

前面兩個在編寫代碼時不太常用,倒是在編寫文檔時能發揮作用,因此它們不是重點,請自行查閱文檔并嘗試。

后面兩個就比較常用了,所謂“自動應用縮進規則”,前提是你得有可用的縮進規則。Vim 內置了非常多種語言的縮進規則,那些沒有內置的也基本上都可以在網上找到合適的縮進規則插件。此前我們也在基礎設置里打開了 filetype indent on,所以此時如果你打開一份源碼文件,然后按下 gg=G,“唰”的一下——整個世界清靜了。

還記得吧?gg 是去文件的最開始處,G 則是去文件的最后一行,所以這條命令的含義是:“從文件的開始處應用自動縮進規則直到文件的最后一行”。當然你可以不必總是對整個文件進行自動縮進,之前我們提到過的移動指令都可以搭配使用,之后我們還要介紹更加強大靈活的文本對象選擇指令,搭配上自動縮進那叫一個如虎添翼~

至于 <> 就沒什么新鮮的了,手動縮進唄!縮進的寬度是由 shiftwidth 指定的,咱們上次已經設置過了的有木有?另外它們也有針對當前行的快捷版本,你已經知道了,是吧?

  

想知道你的 Vim 內置了那些語言的縮進規則?鍵入這條命令::e $VIMRUNTIM/indent

Bonus

你現在可以嘗試把這些最常用的指令應用在你的日常工作里了,如果你能堅持去尋找最有效率的操作方式,你終將會明白其實根本用不著裝太多的插件。我很樂意進一步幫助你,所以你如果在使用中有任何疑問請不要客氣盡管詢問我,我也喜歡看看有什么新的挑戰,所以來吧~


其實,第四篇本來想直接講文本對象的,但是我擔心新手會看不太懂,于是把文本對象一再往后擠。擠到現在才發現,天啊!這篇太長了,實在是不能再繼續下去了。于是,我們只好對文本對象說拜拜了~咱們下期再見!

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

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

相關文章

  • Vim 哲學(一)

    摘要:之所以能卓爾不群靠地就是一種自成一派且精悍有效的編輯器哲學當然也是,就好像網游千千萬卻唯有一覽眾山小,那靠地不是技巧與外在,而是與眾不同的世界觀。征服其實是一種領悟,我融入了的哲學而已。這也是好東西,它比上一個更貼近的哲學。 就在幾個小時以前,我回答了一個關于推薦開發工具的問題,很多朋友表示喜歡和鼓勵,非常感謝!我也很想多寫一些細節,于是便起意開一個系列來聊聊我多次提到的 Vim。 ...

    honhon 評論0 收藏0
  • Vim替換小技巧(兼淺談Vim哲學

    摘要:本文將以此為起點,介紹一些替換小技巧。實話實說,使用命令來替換有違于大多數程序員的習慣。接下更進一步,教多幾個小技巧。這么一來,替換將僅在當前大括號內生效。在替換局部變量時,比起全局替換,這樣的替換方式無疑會更高效。 想必用過Vim的人都知道,在Vim里面,以下命令可以替換當前文件的內容: :[range]s/{要被替換的模式}/{替換的內容}/[flags] 其中range指定替換命...

    ConardLi 評論0 收藏0
  • Vim 哲學(二)

    摘要:為什么要有模式呢以上其實已經講述了一些原因,但真正的價值還在于接下來要講到的哲學。鼠標與快捷鍵的操作治標不治本,它們沒能從根本上解決這個問題。 學會用不同的角度去看待和理解這個世界,你收獲的永遠會比你想象的更多。 上回我分享了如何掌握基礎移動的心得體會,而對于很重要的模式卻只是一帶而過,這其實是有原因的。過去我有過幾次教新手 Vim 的經歷,按照慣常的方式先告訴他們模式切換,...

    ashe 評論0 收藏0
  • Vim 哲學(三)

    摘要:插件鍵位映射技巧性的配置等等都是錦上添花,它們有助于你進一步提高效率以及個性化你的工作環境,但是對于哲學的理解幫助甚少。為你開啟語法高亮。你可以自定義各種語言的語法高亮,無非就是根據這些規 如果沒有挑戰,人生將多么無趣! 兩種副本 在我的硬盤上總是保留著(至少)兩份 Vim 的配置文件。其中一份是所謂完全正式版,它的文件名是 .vimrc,到本系列結束的時候,我們將了解其中...

    klinson 評論0 收藏0
  • Vim - 適合自己,才是最好

    摘要:原文鏈接適合自己的,才是最好的被稱為編輯器之神,是我用過之后才體會到的,用之前實在不敢對它做出什么評價。最初的不適,換來的是效率的飛升。感悟在學習使用的過程中,我最大的感悟就是適合自己的,才是最好的。 原文鏈接:Vim - 適合自己的,才是最好的 Vim 被稱為編輯器之神,是我用過之后才體會到的,用之前實在不敢對它做出什么評價。在大學時代,Vim 的大名就已如雷貫耳,但由于它陡峭的學...

    legendmohe 評論0 收藏0

發表評論

0條評論

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