摘要:本文首發于姐的教程網種提高工作效率的操作使用技巧,授權我原創發布。宏使用命令重復執行一些比較簡單的任務時非常高效,但是當需要執行的操作比較復雜時,宏是更理想的選擇。每執行一次宏就會把當前行替換成的形式并自動將光標移到下一行。
本文首發于VV姐的vim教程網 7種提高工作效率的Vim操作-Vim使用技巧(6),授權我原創發布。
Vim一直被認為是一種非常高效的文本編輯器,但是對于普通用戶來說,很難在入門的時候就體會到Vim的所謂高效性。
本文介紹7種提高你工作效率和生產力的Vim使用技巧,主要集中在對某個文件范圍內的特定目標執行相同的重復性操作。拋磚引玉,作為你體驗使用Vim進行高效操作的入門級教程。
1. Vim重復操作命令.在vim重復操作命令. (英文句點)介紹過,. 命令可以用于重復上次修改。在《Vim實用技巧》一書中花了大量篇幅介紹" . 范式":一次按鍵移動,一次按鍵執行。
假設想在以下的JavaScript代碼里的 + 前后加上空格以使代碼更加美觀,可以執行以下Vim操作:f+s?+?
var foo = "method("+argument1+","+argument2+")";
在上面的Vim操作中,首先使用字符查找命令 f 查找到第一個出現 + 的位置,然后使用 s 命令刪除光標下的字符后再進入插入模式,在輸入完 ?+? 后退出插入模式,完成了第一個 + 前后增加空格的操作。
使用Vim命令 ; 會在當前行重復查找上次 f 命令所查找的目標字符,而 . 命令則重復上次的修改。因此,可以連續輸入 3 次 ;. 來完成全部修改操作。
注:Vim命令 s 是 cl 的復合命令形式,表示刪除一個字符并進入插入模式,更多內容可參考Vim刪除并進入插入模式命令c。
2. Vim宏使用Vim . 命令重復執行一些比較簡單的任務時非常高效,但是當需要執行的操作比較復雜時,Vim宏是更理想的選擇。
Vim宏很適合針對一系列相似的行、段落,甚至是文件,進行重復性的修改。用宏把任意數目的按鍵操作錄制到寄存器,用于之后的回放,可以非常高效地實現重復操作。
假如有很多宏定義的常量
#define CONST_A 1 #define CONST_B 2 #define CONST_C 3 #define CONST_D 4 #define CONST_E 5 ...
現在想替換成const常量的形式
const int CONST_A = 1; const int CONST_B = 2; const int CONST_C = 3; const int CONST_D = 4; const int CONST_E = 5; ...
可以錄制這樣的一個宏:
按 qa 鍵開始錄制宏,將宏存到 a 寄存器
按 0 將光標移到行首,按 ce 刪除 #define 并進入插入模式,輸入 const int 并按ESC回到普通模式
按 e 來到變量名的最后一個字母,按 a 進入插入模式,輸入 = ,按ESC回到普通模式
按 A 將光標移動到最后并進入插入模式,輸入 ; 并按ESC回到普通模式
按 j 將光標移到下一行,按 q 結束宏錄制
錄完這個宏之后,就可以按 @a 回放錄制的宏操作。每執行一次宏就會把當前行替換成const的形式并自動將光標移到下一行。
因此,只需要按9次 @a 或者一次性執行 9@a 就可以替換完所有要編輯的行。
3. Vim可視化模式Vim可視化模式下可以選擇一塊編輯區域,然后對選中的文件內容執行插入、刪除、替換、改變大小寫等操作。
可視化模式能高效地對一塊目標區域執行相同的操作,是在Vim場景下執行重復操作的一種高效方法。
比如,如果想一次性注釋多行文本,可以如下操作:
(1) 普通模式下按 Ctrl + v 進入塊選擇模式
(2) 向上或向下移動光標選擇多行
(3) 移動光標到行的起始位置
(4) 然后按大寫的I進入行首插入模式
(5) 插入注釋符
(6) 按Esc回到命令模式
需要注意的是:Vim同時編輯多行時,只有在當前的插入動作 結束后 (按 Esc 退為命令模式),之前選中的其它行才會顯示執行后的結果。
4. Vim normal命令Vim normal 命令可以在命令行模式執行普通模式下的命令,當normal命令與Vim可視化模式結合時,只需很少的操作就能完成大量重復性工作。
比如在編輯Markdown文件時想在某些行前面都加上 - 讓普通文本行變成無序列表,可以先用 V 選中這些行,然后按 :"<,">normal I- 并回車即可實現。
5. Vim替換命令sVim命令行模式下使用 :substitute 命令 (縮寫形式 s ) 可以將指定范圍內的字符替換成其他目標字符,實現同時處理多個目標行的操作效果。
例如,假設希望將Vim當前打開文件的所有行尾多余的空格刪除,可以使用Vim命令 :%s= *$==。
其中,% 表示整個文件范圍, *$ 表示以0個或多個 * 結尾的文本行,更多關于 :substitute 命令的使用,可以參考Vim替換命令substitute小結。
6. Vim寄存器Vim中很多東西都是通過寄存器來傳遞,比如復制剪切一段文本、訪問系統的剪貼板,錄制的宏等,都是將對應的操作結果保存在寄存器內。使用 :reg 寄存器名 命令可以查看對應寄存器中的內容。
關于Vim寄存器的更多內容可以參考Vim教程網上的內容:Vim寄存器介紹、Vim剪切、復制、粘貼和刪除操作與Vim無名寄存器。
在插入模式下或者命令行模式下,使用
舉個例子,想使用 :s 命令替換一個很長的單詞而又不想手動輸入它,可以先在普通模模式下使用命令 piw 或 piW 將其復制下來,默認會包存到無名寄存器 " 里,然后使用
關于Vim光標移動的內容,可以查看Vim光標移動命令匯總,在此先不做贅述。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25033.html
摘要:插件鍵位映射技巧性的配置等等都是錦上添花,它們有助于你進一步提高效率以及個性化你的工作環境,但是對于哲學的理解幫助甚少。為你開啟語法高亮。你可以自定義各種語言的語法高亮,無非就是根據這些規 如果沒有挑戰,人生將多么無趣! 兩種副本 在我的硬盤上總是保留著(至少)兩份 Vim 的配置文件。其中一份是所謂完全正式版,它的文件名是 .vimrc,到本系列結束的時候,我們將了解其中...
摘要:相反,不顯示行號設置為粘貼模式,解決粘貼時縮進錯亂問題。會自動加入創建從當前行起至以下行的折疊標記,進行折疊。中的標記都有一個名字,這個名字用單一的字符表示。 學習vim并且其會成為你最后一個使用的文本編輯器 學習建議: 丟棄鼠標和小鍵盤 具有搭配使用各種按鍵的意識 首先來一張 mindmap : showImg(http://sean-images.qiniudn.com/V...
閱讀 2311·2021-11-23 09:51
閱讀 3748·2021-11-11 10:57
閱讀 1391·2021-10-09 09:43
閱讀 2481·2021-09-29 09:35
閱讀 2013·2019-08-30 15:54
閱讀 1788·2019-08-30 15:44
閱讀 3179·2019-08-30 13:20
閱讀 1687·2019-08-30 11:19