易燃物匯聚 YouTube 有聲書與書評
Vim實用技巧 封面

Vim實用技巧

Drew Neil

1.5萬人在讀
19.3萬字總字數
¥35.4定價

有聲書與視頻解讀 YouTube視頻解讀 1

內容簡介

Vim是程序員、網站開發人員及系統管理員的重要工具,其速度和效率令其他的文本編輯器難以望其項背。Vim能在幾乎每一個系統上運行,並支持大多數編程語言和標記語言。《Vim實用技巧》包含了Vim的實用技巧和使用指南。全書概括了121個技巧,通過豐富的示例、清晰的體例和詳細的講解,展示了高效使用Vim的嶄新方法。《Vim實用技巧》爲那些想要提升自己的程序員編寫,閱讀本書是熟練地掌握高超的Vim技巧的必由之路。全書共21章,包括121個技巧。每一章都是關於某一相關主題的技巧集合。每一個技巧都有針對性地解決一個或一類問題,幫助讀者提升Vim的使用技能。《Vim實用技巧》示例豐富,講解清晰,採用一種簡單的標記方法,表示交互式的編輯效果,可以幫助讀者快速掌握和精通Vim。

讀者書評

★★★★★

敲代碼時,有一個困擾我很久的問題,終於在最近的一次搜索中找到答案。這問題發生在Vim普通模式下: # 1. 選中並複製一個單詞Avey# 2. 搜索單詞bbbbb/bbbbb<CR># 3. 用單詞A覆蓋掉第一個單詞bbbbb<Esc>vep# 4.繼續覆蓋下一個bbbbbn. 問題出在第4步,n.在此處沒有反應,單詞bbbbb並不變成A。我網上衝浪好多次,都沒找到答案,直到某天在Stack Overflow上看到這樣的一句: In 2023, you can use P instead of p, which will allow you to keep pasting the "yanked" selection.(粘貼時可以使用大寫的P代替小寫的p,這樣複製的內容就不會變化啦。) 由此,我找到這問題的處理方式。 於此同時,我在其它回答中看到registry關鍵字:p操作會默認將被覆蓋的內容複製下來,可以通過使用不同的寄存器來存儲要粘貼的內容。我對Vim的寄存器一點不瞭解,導致這句話看不太懂,於是內心又突發奇想:“Vim是不是其實也有相關書籍的,不然找一本來看看?” 我找到《Vim實用技巧》然後看完了它,整個的閱讀過程,是在不停發出“帥!”“贊啊!”之類感嘆中度過的。作者於書中分享的那些操作方式,巧妙實用又有跡可循。 我初次接觸Vim,是15年剛換到跟萌哥一個組時。萌哥對我敲Lua代碼的方式(在Visual Studio中裝一個BabyLua插件)感到好奇,經過一番討論之後我發現:“萌哥敲代碼的手法可太熟練了。” 見賢思齊,從那以後我敲代碼,也都用Vim。(前兩年,改成在VS Code中用Vim,爲這切換,我還專門理了一篇小博客。) 正像使用Git一樣,熟悉基本操作之後,這些年來,我使用Vim的方式是沒有大的變化的,直到想要優化複製粘貼方式的今天。 正像閱讀《Pro Git》一樣,讀完《Vim實用技巧》,我對Vim也新增許多認知、多出許多未來會常用的指令。 本篇讀書筆記,便是這些認知與指令的整理。未來的我,將基於此,持續完善自己的編輯能力。(作者使用Vim寫成本書,由此,未來的公衆號寫作,如果是電腦上操作,我將也用Vim。) 一、一些概念性認知1、Vim是什麼? Vim是一種文本編輯方式,使用Vim編輯,我們可以保證手不離開鍵盤,快速做出自己想要的修改。熟悉Vim之後,我們敲代碼時,會有一種行雲流水之感,腦子怎樣想,手便怎麼做;手是絕不會拖腦子後腿的。 Vi是Visual單詞的縮寫,而Vim則是Vi improved(Vi增強版)的縮寫。 2、Vim的操作機理是怎樣的? 操作符與動作命令的結合形成了一種語法。這種語法的第一條規則很簡單,即一個操作由一個操作符,後面跟一個動作命令組成。學習新的動作命令及操作符,就像是在學習Vim的詞彙一樣。如果掌握了這一簡單的語法規則,在詞彙量增長時,就能表達更多的想法。 假如我們已經知道如何用 daw 刪除一個單詞,然後又學到 gU 命令(參見 :h gU)。它也是個操作符,所以我們可以用 gUaw 把當前單詞轉換成大寫形式。如果我們的詞彙進一步擴充,學會了作用於段落的 ap 動作命令,就會發現我們可以進行兩個新的操作:用 dap 刪除整個段落,或者用 gUap 把整段文字轉換爲大寫。 Vim的語法只有一條額外規則,即當一個操作符命令被連續調用兩次時,它會作用於當前行。所以 dd 刪除當前行,而 >> 縮進當前行。gU 命令是一種特殊情況,我們既可以用 gUgU ,也可以用簡化版的 gUU 來使它作用於當前行。 執行、重複、回退,是Vim的編輯哲學。我們的終極形態,是完成一次“語法”執行之後,剩下的重複修改,只用.! 3、寄存器 此前的我,從沒有了解過Vim的寄存器概念,或者說嘗試瞭解過,但沒有了解明白。 寄存器示例 其實Vim的寄存器概念很簡單,它就是一個容器而已,它存儲的,是我們複製的內容或一些類似文件名的固定配置。 Vim擁有很多個寄存器,每一個寄存器有自己的單獨名字。如上圖,在Vim普通模式下,按:後輸入reg便能查看當前擁有值的所有寄存器。 下面是兩個簡單使用示例(注意:字符"是必須的): # 複製當前單詞到寄存器a"ayw# 將寄存器a中的值粘貼出來"ap# 將當前單詞複製到剪切板"+yw# 一個只讀的寄存器,保存當前文件名"% 4、宏 正錄製宏的提示 宏概念,與寄存器一樣,都是以前瞭解過但不知道具體如何使用的,我甚至常常疑惑:上圖中的那個提示到底是什麼意思呢? 宏和.一樣,都是爲了方便的重複操作,以下是一個具體示例: # 1. 開始宏的錄製,將指令存到寄存器a中qa# 2. 在行前插入var關鍵字Ivar <Esc># 3. 在行末插入一個;符號A;<Esc># 4. 結束宏的錄製q# 5. 在下一行執行宏當中的內容,可太帥了啊!這會在下一行的行首行末分別加上var和;j@a 與宏相關的指令,還有下方兩條: # 查看寄存器a中的指令內容:reg a# 在選中的區間內回放宏q(帥必須再加一):'<,'>normal @q 宏的具體指令內容存放在寄存器中,所以是可以直接將其內容複製進當前正編輯文件,編輯該條宏之後再將其複製進寄存器然後再執行宏的。 此處再加上一點自己的小想法:關於宏關於各種指令的詳細闡述,建議大家看原書,我這裏只記錄自己不太熟悉但會常用的指令。正像書中所說: 就像黑白棋遊戲一樣,學會Vim的宏只需一分鐘,但要窮其一生才能精通。不過從新手到高手,每個人都能從該功能中獲益匪淺,因爲它讓我們的工作易於自動化。 二、那些將常使用但不太熟悉的操作1、普通指令 # 選中上次選中gv# 行末插入,代替$a。少輸入一個字符也算進步A# delete a word,從前面從後面都可以刪daw# 對數字執行加和減操作,也太太太太帥了吧!<c-a><c-x># 反轉從當前光標到單詞結束內字符的大小寫g~w# 行內搜索,,逗號往前挪,;分號往後挪f# 放在某個字符上,可以查看這個字符的編碼ga# 可視模式選擇時,可以用o重新調整開頭,用O調整結尾v# 大寫的v,選中整行V# 進入Vim歷史命令記錄窗口q:# Ctrl+w是控制窗口的前置鍵,後面跟上jkhl(已經成爲程序性記憶,手指知道但腦子不知道)是向對應方向切換窗口=將所有窗口等分,_最大化窗口高度,|最大化窗口寬度# 前面加g,是在屏幕行中操作,如果一行文本太長,在屏幕中可能會顯示兩行,這兩行,就是屏幕行gj/gk# 移動到第一個實際行的第一個非空白字符^# 按照字串移動B/E/W# 將文本選中並複製到系統剪切板("+是系統寄存器)ve"+y# 選中大括號內部的內容(大括號可以換成"、小括號、尖括號等等)vi}# 選中大括號內部的內容並且包含大括號va}# 如上,將大括號內部內容刪掉並開始輸入新的內容(d和y是一樣的,太強大了)ci}# 如上,選中xml標籤內的文本vit# 標記當前位置,第二個m可以是a到z。mm# 跳轉到標記位置(當前文件內)`m# 標記當前位置,第二個M可以是A到ZmM# 跳轉到標記位置(多個文件間跳轉)`M# 在當前文件的修改位置列表中來回跳轉g;和g,# 從上次插入的地方繼續插入gi# 文件名跳轉(VS Code中還是老實用F12吧),g代表“當前一整行範圍”gf# 搜索的時候,加上\V,可以搜到真正的.號/\V.# 搜索時候,加上\v,並在單詞左右加上小於大於號,可以只匹配到完整單詞/\v<the><CR 2、插入模式 # 加上寄存器名字則是粘貼ctrl-r" 3、命令行模式 # %代表整個文件,normal代表執行普通模式下指令 A;代表在行末插入一個分號(帥啊!但vscode vim未實現):%normal A;# 選中某區域後直接按:,命令行中會多出:'<,'>表示一個區間,之後再輸入normal A;,則在選中部分每行末尾都加上;了# 緩衝區(打開的文件)列表正向移動:bn# 緩衝區列表逆向移動(我一般用:b1,切換到具體某個更多一點):bp# 刪掉某個緩衝區:bdelete n# 在命令行模式下運行shell命令:! ls# 只顯示當前正活動的窗口:only# 打開文件管理器,並顯示當前工作目錄:e.# 打開文件管理器,並顯示活動緩衝區所在的目錄:E# 打開循環查找:set wrapscan# 關閉循環查找(記在此處是爲了告訴自己,設置bool值,可以直接在選項前加no):set nowrapscan# 順序查找test/test# 逆序查找test?test# 統計當前匹配到的個數(映射快捷鍵,gc似乎是沒有使用的;但vscode中默認有數量,好像又不太有必要哦):%s///gn# 在查找test後再跳轉到匹配單詞的最末處,這種情況下,可以很方便的n.出單詞的完善,這個情況我遇見過很多次,此處很有用/test/e# 接上條,如果匹配之初忘記跳末尾,可以用這個換成末尾(帥!)//e 上面查找是否加e有些難以理解,此處配一張圖: 匹配到單詞的末尾 三、小結閱讀本書時,我經歷一個小小的情緒變遷。 剛開始學着使用Vim時,我超級超級佩服萌哥(現在當然依然佩服着)的熟練,到自己跟着本書學習之後,再體驗一次之前已經有過的認知:其實這世界上的技能,都是可以花時間去了解去熟悉然後學會接着熟練的,一切都在於是否願意去花時間學習。難怪萌哥會說:“沒什麼的啦,你學一學也就會了。” 練無止境,且持續熟練着,“不加思考就能用Vim完成很多操作”是我的目標。 最後,我當然要再安利一次:“程序員們,不然花兩週時間試試看Vim?那種手不用離開鍵盤的敲代碼體驗,真不錯的。待操作稍微熟練些再看《Vim實用技巧》,它會幫助我們完善關於Vim的認知,它讓我們理解某個操作爲什麼會有效。”

★★★★★

原文中有句話,大意說,學會Vim只需一分鐘,但要窮其一生才能精通。 我們發出一個願望,有了一個想法或者行事方向,就面對一生的複雜的實踐。 前幾日 Bram Moolenaar 這位vim創世神去世了,他的開源精神和對於烏干達兒童的支持,以及將一生奉獻給vim的行爲是我們的崇高榜樣。也許在泥濘的世道上我們不得不使用一些技巧生存下去,但總有優秀的人以精神純粹的方式給存在着 。vim如此多的代碼編寫者帶來便利,和vim在一起的工作的時候,偶爾會想起bram,然後重新思考如何儘可能用善意對待整個世界。他和他的vim是實踐者,也是一座精神信標。 我個人是希望自己高效優雅的解決問題的。學習雙拼、vim都是想達到思維不受輸出影響的狀態。與此同時要提醒自己vim只是一項工具一種個人技巧,改變問題的是技術進步,處理問題靠的是哲學、政治。現在工具更新劇烈學什麼都是屠龍之技。很多東西就是學會了,青春也沒了。vim對與代碼編寫者就像老會計對於算盤,武林宗師對於寶劍。都是錦上填花的東西,也必將成爲歷史車輪上的塵埃,最終留下唏噓嘆息。如何處理好當下的優化,和未來發展的關係就是另一個問題了。也許你的工作要在垃圾袋上秀花,也不妨礙以刺繡垃圾袋的名義賣個高價,讓自己生活好一點。或者讓自己的工作給自己帶來美的享受。無論如何,嚮往優秀是一種狀態,和所處的環境無關。躺平擺爛是一種智慧,這能保證你在其他層面的優秀。 本書可以說完美的達到了著書的目的,我在閱讀的時候感覺到vim的方法論和我之前操作Excel體會到的東西遙相呼應,傳授知識的時候考慮到了對讀者不瞭解的概念進行遮蔽,先講.命令這類重複的哲學,再講控制自己操作顆粒度使操作可重複的技巧,之後再具體寫窗體控制正則、ctag,可以說深入淺出了。段落和標題也起的很利落,能直觀的從目錄中檢索到自己需要查看的信息。只是現在其他ide也真的很香,pycharm、vscode都有兼容插件,當然,形式不重要,不管用什麼,用的都是vim。 這本書很詳細,即便你對vim以及很瞭解了,你也能從書中獲得一些新的點子。我在讀這種技術類的書的時候希望自己能夠掌握整個書的框架,以便以後遇到對應請況的時候查詢,但經常忍不住花費很多時間在瞭解具體細節上,這也從側面說明這本書作者和翻譯的語言水平還是很平易的很有水平的。 吹的這麼神,其實vim本身還是有問題,使用vim最大的問題是,如何放棄vim。還有就是對於中文處理差一點意思,這麼陡峭的學習曲線,這麼狹窄的應用範圍,沉沒成本很大的,學了就是自己暗爽,沒學也別惦記就是了。

★★★★★

我在2018年入坑的Vim,當時在看了各種教程、Blog、速查表、“字根表”後纔開始看的這本書。看的時候發現這是一本內容相當全面,並且編排的特別好的書。但書畢竟是書,內容太詳細,現代快節奏大家並不一定有耐心看。我的建議是,可以看短一點的教程先快速入門,等用Vim進入“存活期”後(也就是能用Vim進行無障礙編碼),想進一步提高自己並系統的學習一遍時,可以看看此書。當然作爲字典常備手邊查詢也不錯。這本書我並沒有看完,因爲不可能有人真的把Vim學完,每個人都是用的Vim子集,挑一部分自己順手的功能,存活下來後就一直用了。

★★★★★

我以前以爲自己用vim已經很快樂了 直到看到這本書,才知道 以前的我,不是真正的快樂

★★★★★

超級棒的一本 vim 指導書,在這本書之前,我讀過微信讀書的另一本 vim8文本處理實戰 ,感覺也蠻不錯,那本書非常符合我對工具書的既有印象。但這本書相當不同,要技巧有技巧,要原理有原理,甚至還有一些歷史。本書章節安排相當合理,每個章節的內容都剛剛好,從頭到尾一氣呵成,讀完收穫非常大,每一個對 vim 感興趣的朋友都應該試着讀一讀。

★★★★☆

工具書,初次閱讀建議使用網頁版微讀,邊看邊練過一遍即可,學核心理念,而非末枝細節。像工作模式,動作命令,寄存器,窗口緩衝等基礎必須掌握,插件和正則適度掌握,宏對程序員而言沒有必要太深入,畢竟不是做大量文檔處理類的工作。自己做配置的話,主要考慮按鍵映射和常用插件:目錄瀏覽,自動補全,符號跳轉,編譯調試,主題美化等。

★★★★★

- `《Vim實用技巧》, 這本書與其說是技巧不如說是Vim的哲學, 不斷刷新你對"一個編輯器能做什麼"的想象`, 簡直神書 - Vim是一款可高度客製化的文本編輯器, 學習曲線很陡, 但沒有程序員能夠拒絕一個不需要移動雙手的編輯器 - 像Vim高手一樣思考問題, 能以與思考同步的速度編輯文本 - 存在大量重複性工作, .命令重複上次的修改, 點命令是一個微型的宏macro - 明確什麼是一次修改, 普通模式中執行的命令, 進入插入模式時也會形成一次修改 - Vim的理想編輯模式, 一鍵移動, 一鍵執行, 減少無關的移動, 簡化等效的操作 推薦的Vim路線, 先看完這個然後開始使用LazyVim作爲主力編輯器, 體驗超好

★★★★★

Vim我很久以前就在用了,但是一直用的磕磕絆絆,一方面學習成本確實比較高,另一方面現在的IDE真的是太香了,在這個時代學Vim,感覺就像部隊給我發了把AK47,但我固執地試圖研習傳統刀法。但我覺得這是值得的,我相信沒有程序員可以拒絕一個幾乎不需要移動雙手的編輯器。 這本書我覺得很適合新手來看,它雖然是按技巧方式組織的,但是很系統,每一章專注於一方面的內容,每幾章結成一個部分,條理非常清晰,當成一個教材來看也未嘗不可。而且幾乎每個技巧都有例子的講解,非常容易搞懂和復現。我是很認真地過了一遍的,其中有些部分現在看來可能沒必要那麼上心,比如宏的部分,我覺得除非是大型的修改,不然光是去思考怎麼構造一個宏命令,就夠我想半天的了;再比如ctags的部分,我用python嘗試了一下,確實沒有Vs code和IDE用起來那麼絲滑,而且對於編輯器之外的修改始終束手無策,比較遺憾。書看完前半部分的時候我甚至想直接換到Vim上進行以後的開發,但是看完後半部分我覺得還是IDE用着比較香,hhh,或許把Vim作爲一個插件來使用纔是最適合我的方式吧。 看完還要多練習,相信我在Vim上花費的學習時間一定能大大增加我的開發效率,day day up!

★★★★★

非常全面,而且引導性非常好的書。雖然大模型幾秒內就羅列出各種vim命令了,但這本書依然能啓發一些思考。第六部分工具之前的內容,都是經典的vim操作,至今不過時。但如今neovim時代,最後那部分工具就沒必要看了,安裝一個Lazyvim帶來的體驗對第六部分的內容簡直是降維打擊。書的內容不錯,但微信讀書排版稀爛,代碼和命令的閱讀體驗很差。

★★★★★

非常好的一本書,我最開始用了一段時候的Vim後面轉到Neovim,用了也有好幾年了。這本書依然會讓我學到很多之前不知道的知識,而且自己也在嘗試運用這些學到的知識。 不過這本書的排版確實有很大問題,裏面的代碼應該要放在代碼塊裏面,簡短的命令應該要可以複製,部分命令還存在錯印。 Vim的作者去世後我才第一次瞭解到Vim作者的經歷,他是一個很有大愛的人,非常佩服他。 Vim 的安裝許可證與衆不同,它是作爲慈善共享軟件發佈的(參見:h license )。這意味着它可以被免費使用,但它也鼓勵你爲 ICC 荷蘭基金會提供捐款,該基金會旨在幫助烏干達的貧困兒童。該捐贈項目值得你的付出,並可藉此向Vim的作者們表達謝意。 相信這個世界不會變好,但是我希望它變好。

書籍信息

作者Drew Neil
譯者楊源 車文隆
出版社人民郵電出版社
出版時間2014-05-01
ISBN9787115338693
分類計算機-計算機綜合
格式EPUB
完結狀態連載中
章節數36