AcWing 876. 快速冪求逆元
Vim的很多命令和功能與Linux系統的命令和功能及其相似,可以說是一脈相承。Vim教程網(https://vimjc.com)總結了10條Linux下提高效率的小技巧,並與Vim對應命令進行對比。
(1)<Ctrl a>
:Linux 命令列下執行該命令,將游標移動到行首(a 是 ahead 的縮寫)
快速移動游標,不僅是在 Vim 下的高優需求,也是 Linux 命令列下的常見工作場景。
例如,在 Linux 命令列下敲完了一長串命令後,如果想在前面先執行一個命令,則可以按組合鍵<Ctrl a>
將游標移動到行首,輸入想新增的命令。
Vim 下也有將游標快速移動到行首的實用命令。在 Vim 普通模式下,使用
^
可以在Vim下移動游標到當前行的第一個非空字元。
(2)<Ctrl e>
:Linux 命令列下執行該命令,將游標移動到行尾(e 是 end 的縮寫)
既然有將游標快速移動到行首的需求,自然也有將游標快速移動到行尾的需求。與組合鍵<Ctrl a>
對應的命令<Ctrl e>
會將游標移動到行尾,方便繼續輸入要執行的命令。
Vim 下也有將游標快速移動到行尾的命令。在 Vim 普通模式下,使用$
可以將游標移動到當前行的行尾,而使用A
命令可以將游標移動到當前行的行尾,並進入插入模式。
(3)<Ctrl r>
:Linux 命令列下執行該命令,會進入歷史命令查詢視窗,輸入要查詢的命令可快速選擇歷史命令
個人覺得,<Ctrl r>
(r 是 retrieve (檢索) 的縮寫)命令是一個非常實用的 Linux 技巧。當需要在已經執行過的歷史命令中 (即history
命令的結果) 查詢某條命令並再次執行該命令時,可以使用<Ctrl r>
調出 Linux 歷史命令的搜尋視窗,並輸入要查詢的目前命令進行查詢並重新執行之。
當然可以通過history | grep xxx
在已執行的歷史命令列表中找到名為xxx的命令,然後複製該命令再重複執行之。
毋庸置疑,<Ctrl r>
相比上述的步驟更加高效、便捷。
Vim 裡的模糊搜尋外掛 ctrlp跟 Linux 終端命令列下執行<Ctrl r>
(4)<Ctrl w>
:Linux 命令列下執行該命令,會刪除當前游標附近的一個詞 (以空格隔開的字串)
刪除當前游標附近的一個詞,這是工作中經常遇到的一個場景。在命令列輸入命令時,經常會因為輸入失誤或改變命令而需要進行刪除,使用退格鍵 (Backspace) 一個個刪除字元的效率太低了,如果能一次刪除一個單詞,將會極大減少按鍵次數,整體提高Linux使用效率。
w
表示以一個空格隔開的字串,這在 Vim 下也是相同的概念。推薦閱讀:Vim基於單詞移動及Vim單詞、字串概念。
(5)<Ctrl u>
:Linux 命令列下執行該命令,會刪除命令列上已經敲出來的所有文字 (即刪除整行)
經常在工作中需要取消已經敲出了一長串的命令。除了可以使用<Ctrl c>
提前中斷本次即將執行的命令外,還可以使用<Ctrl u>
刪除命令列上所有已經輸入的字元。
個人覺得,<Ctrl u>
的實用性其實不大,畢竟已經有了組合命令<Ctrl c>
能完成同樣的操作,其被大家所熟知。
注:<Ctrl c>
用於中斷程式的執行,而<Ctrl z>
用於暫停程式的執行 (可通過fg
命令恢復)。
在 Vim 下,可以使用dd
命令快速刪除當前游標所在行。
(6)<Ctrl y>
:Linux 命令列下執行該命令,將貼上<Ctrl w>
、<Ctrl u>
等命令刪除的文字
當刪除了 Linux 命令列中已經輸入的某些字元後,可以在適當的手機號交易地圖時機將之再粘貼出來以便再次使用。
熟悉 Vim 基本命令的都知道,y
在 Vim 命令集中是yank
的縮寫,表示複製功能。Vim 下經常使用yy
命令複製文字。
聰明如斯的你,肯定是記住了yy
命令,自然也就記住了<Ctrl y>
命令哦~ (這也是為什麼要在本文中將這些 Linux 實用技巧與 Vim 命令進行對比說明的原因)
(7)!xx關鍵字
:Linux 命令列下執行該命令,會執行最近一條包含有xx關鍵字的歷史命令
history
命令記錄了 Linux 系統最近執行過的歷史命令列表。如果需要重複執行最近一條包含有xx關鍵字的命令,可以使用!xx關鍵字
。
!
真是使用 Linux 下的一個操作神器。可以使用它快速執行一條歷史命令,既避免了重複的按鍵輸入,又減少了通過翻 "↑" 箭頭人肉查詢歷史命令的工作量。
如果包含有xx關鍵字的歷史命令有多條,且本次希望執行的目標命令並不是隔當前時間最近的一條,則還可以使用!行號n
的方式指定執行history
列表中行號為n的命令。
可以看出,!
既可以使用關鍵字指定要執行的歷史命令,也可以通過行號精確指定要執行的歷史命令。推薦使用搜索引擎搜尋關鍵字 "linux 驚歎號" 閱讀更多相關內容的細節。
Vim 下好像並沒有與之功能類似的命令?
(8)cd -
:Linux 命令列下執行該命令,會將當前目錄切換到上一次所在目錄
在 Linux 命令列下進行操作時,經常遇到辛辛苦苦進入到一個很深的目錄並執行一些操作後,不小心輸入了cd
命令切換回了當前使用者根目錄的情況。再次輸入完整的深層次目錄或通過翻 "↑" 鍵以便再次進入該目錄顯然是一個很 "蠢笨" 的方法。
在 Linux 下,假設當前所在目錄為a,通過cd 某路徑
命令切換到了b目錄後,使用cd -
命令可快速切換回a目錄哦。
(9)<Shift Insert>
:Linux 命令列下執行該命令,可貼上複製到系統剪下板上的內容
在 Linux 命令列下,除了可以使用滑鼠右鍵貼上複製的文字外,還可以使用組合鍵<Shift Insert>
完成貼上操作。
據說,極客型 Linux 玩家可以做到不使用滑鼠完成所有的日常工作。<Shift Insert>
進行文字貼上顯然可以減少使用滑鼠的頻率。在使用 xshell 等遠端終端模擬軟體時,使用<Shift Insert>
是不是一個更加高效、便捷的文字貼上方法呢?
注:<Ctrl Insert>
用於複製已選中的命令列控制檯文字 (不是<Ctrl c>
哦)。
(10)<Ctrl l>
:Linux 命令列下執行該命令,可清空當前螢幕
Linux 下可以使用clear
命令清空整個螢幕,<Ctrl l>
可達到同樣的效果。
Vim 下,zz
命令可用來重繪螢幕並把當前行顯示在視窗正中。更多Vim實用技巧,推薦閱讀《30個Vim常用命令和使用技巧整理》。
除此之外,還有一些比較不為人熟知的小技巧,例如,連續按3次Esc
鍵可顯示當前系統支援的所有命令,<Ctrl [
相當於Esc
鍵的功能,<Ctrl i>
等價於Tab鍵的功能等。
更多 Linux 和 Vim 實用技巧,期待你來跟我分享~