天天看點

『學了就忘』vim編輯器基礎 — 96、末行模式中的相關指令

目錄

1、在文檔中顯示行号

2、是否顯示文檔内容相關顔色

3、是否将查找的字元串高亮顯示

4、是否顯示右下角的狀态欄

5、是否在左下角顯示如"--INSERT--"之類的狀态欄

6、是否顯示隐藏字元

7、vim支援更多的設定參數

8、vim編輯器配置檔案

9、查找

10、替換

<code>vim</code>編輯器中常用的末行模式指令。

<code>: set nu</code>:顯示行号。

<code>: set nonu</code>:取消行号。

一旦退出文檔,再打開行号就沒有了。(文章最後第8點,有解決。)

<code>: syntax on</code>:顯示顔色。

<code>: syntax off</code>:關閉顔色。

說明: 是否依據文法顯示相關的顔色幫助。在<code>vim</code>中修改相關的配置檔案或Shell腳本檔案時(如前面示例的腳本<code>/etc/init.d/sshad</code>),預設會顯示相應的顔色,用來幫助排錯。如果覺得顔色産生了幹擾,則可以取消此設定。

設定是否将查找的字元串高亮顯示。預設是<code>set hlsearch</code>高亮顯示。

<code>: set hisearch</code>:高亮顯示。

<code>: set nohlsearch</code>:不高亮顯示。

注意: 當你在指令模式的時候,輸入<code>/</code>進入末行模式搜尋關鍵字的時候,如果搜尋到比對的内容,關鍵字會自動高亮顯示。你關閉檔案,再進入檔案後,之前被搜尋的關鍵字依舊被高亮顯示。你再打開其他的檔案,如果該檔案也有之前搜尋的關鍵字,依然會被高亮顯示。 我們可以用<code>: set nohlsearch</code>取消高亮,在<code>set hisearch</code>開啟來解決一直高亮的問題。但是我們一般不這樣用,我們通常輸入<code>/</code>進入末行模式,胡亂打一個確定沒有的關鍵字,這樣高亮的資訊就關閉了。

設定是否顯示右下角的狀态欄。預設是<code>set ruler</code>顯示。

如下圖所示:

<code>: set ruler</code>:顯示。

<code>: set noruler</code>:不顯示。

提示:<code>14,8</code>表示,光标在目前文檔的第14行,第8個字元上。

設定是否在左下角顯示如<code>--INSERT--</code>之類的狀态欄。預設是<code>set showmode</code>顯示。

<code>: set showmode</code>:開啟顯示。

<code>: set noshowmode</code>:關閉顯示。

一般都開始顯示。

設定是否顯示隐藏字元(Tab鍵用<code>^I</code>表示,回車符用<code>$</code>表示)。

預設是<code>nolist</code>。如果使用<code>set list</code>顯示隐藏字元,類似<code>cat -A 檔案名</code>。

<code>: set list</code>:顯示隐藏字元。

<code>: set nolist</code>:不顯示隐藏字元。

補充: Windows系統下的回車符在Linux系統中是用<code>^M$</code>符号顯示,而不是用Linux系統的回車符<code>$</code>顯示。這樣會導緻Windows系統下編輯的程式腳本,無法在Linux系統中執行。這時可以通過指令<code>dos2unix</code>,把Windows格式轉為Linux格式,當然反過來<code>unix2dos</code>指令就是把Linux格式轉為Windows格式。這兩個指令預設沒有安裝,需要手工安裝才能使用。
提示: 如果文檔是在Windows系統中編輯的,在Linux系統中用<code>vim</code>編輯器打開,<code>vim</code>編輯器會自動把回車符這樣的隐藏符号轉換過來。

可以通過<code>:set all</code>進行檢視。

大家會發現,這些設定參數都隻是臨時生效,一旦關閉檔案再打開,又需要重新輸入。如果想要永久生效,需要手工建立<code>vim</code>的配置檔案<code>~/.vimrc</code>(在家目錄下建立一個<code>.vimrc</code>檔案,既然在家目錄,說明隻對使用者個人有用),把你需要的參數寫入配置檔案就永久生效了。

執行如下指令:<code>[root@localhost ~]# vim .vimrc</code>

然後在檔案内輸入:

儲存即可,之後在打開任何檔案,都自動生效。

<code>/查找内容</code>:從光标所在行向下查找。

<code>?查找内容</code>:從光标所在行向上搜尋。

<code>n</code>:下一個。

<code>N</code>:上一個。

<code>:1,10s/old/new/g</code>:替換1到10行的所有<code>old</code>為<code>new</code>。

注:

<code>1,10s</code>表示第一行到第十行,<code>s</code>代表替換。

<code>/old/new</code>表示把<code>old</code>換成<code>new</code>。

<code>g</code>表示範圍内替換所有。(如果不加<code>g</code>,隻會替換範圍内第一個<code>old</code>)

<code>:%s/old/new/g</code>:替換整個檔案的<code>old</code>為<code>new</code>。

<code>%</code>表示範圍是整篇文檔。

替換字元串,舉幾個例子:

在shell中<code>#</code>開頭是注釋,那我是否可以注釋檔案的前10行呢?手工一個一個注釋很麻煩,如何進行批量替換。

<code>:1,10s/^/#/g</code>:注釋1到10行。

提示:<code>^</code>正規表達式表示行首,把行首變成<code>#</code>。

<code>:1,10s/^#//g</code>:取消注釋。

提示:<code>^#</code>意思是把行首的#去掉。正規表達式是包含比對,如果隻寫<code>#</code>,表示1到10行所有的<code>#</code>都去掉。

在C語言,PHP語言等大多數語言中,是使用<code>//</code>開頭作為注釋的,用<code>vim</code>來寫這些程式語言腳本,如何批量加入<code>//</code>注釋。

<code>:1,10s/^/\/\//g</code>:1到10行,行首加入<code>//</code>。

提示:把行首<code>^</code>替換成<code>\/\/</code>(雙斜杠 <code>//</code>),<code>\</code>符号在指令行中代表換行,<code>\</code>符号在字元串中代表轉義符。(轉義符就是把有特殊含義的字元轉換成普通的字元串符号。)

<code>:1,10s/^\/\///g</code>:取消1到10行行首的<code>//</code>。

提示:絕大多數的替換都用最上邊的兩種替換,下邊的兩個例子比較特殊,以後用到照着寫就好。