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

繁華似錦Fighting發表於2021-12-28

vim編輯器中常用的末行模式命令。

1、在文件中顯示行號

  • : set nu:顯示行號。
  • : set nonu:取消行號。

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

2、是否顯示文件內容相關顏色

  • : syntax on:顯示顏色。
  • : syntax off:關閉顏色。

說明:

是否依據語法顯示相關的顏色幫助。在vim中修改相關的配置檔案或Shell指令碼檔案時(如前面示例的指令碼/etc/init.d/sshad),預設會顯示相應的顏色,用來幫助排錯。如果覺得顏色產生了干擾,則可以取消此設定。

3、是否將查詢的字串高亮顯示

設定是否將查詢的字串高亮顯示。預設是set hlsearch高亮顯示。

  • : set hisearch:高亮顯示。
  • : set nohlsearch:不高亮顯示。

注意:

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

4、是否顯示右下角的狀態列

設定是否顯示右下角的狀態列。預設是set ruler顯示。

如下圖所示:

image

  • : set ruler:顯示。
  • : set noruler:不顯示。

提示:14,8表示,游標在當前文件的第14行,第8個字元上。

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

設定是否在左下角顯示如--INSERT--之類的狀態列。預設是set showmode顯示。

  • : set showmode:開啟顯示。
  • : set noshowmode:關閉顯示。

一般都開始顯示。

6、是否顯示隱藏字元

設定是否顯示隱藏字元(Tab鍵用^I表示,回車符用$表示)。
預設是nolist。如果使用set list顯示隱藏字元,類似cat -A 檔名

  • : set list:顯示隱藏字元。
  • : set nolist:不顯示隱藏字元。

補充:

Windows系統下的回車符在Linux系統中是用^M$符號顯示,而不是用Linux系統的回車符$顯示。這樣會導致Windows系統下編輯的程式指令碼,無法在Linux系統中執行。這時可以通過命令dos2unix,把Windows格式轉為Linux格式,當然反過來unix2dos命令就是把Linux格式轉為Windows格式。這兩個命令預設沒有安裝,需要手工安裝才能使用。

提示:

如果文件是在Windows系統中編輯的,在Linux系統中用vim編輯器開啟,vim編輯器會自動把回車符這樣的隱藏符號轉換過來。

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

可以通過:set all進行檢視。

8、vim編輯器配置檔案

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

執行如下命令:[root@localhost ~]# vim .vimrc

然後在檔案內輸入:

set nu
syntax off
set hisearch
set ruler
set showmode
set list
等等。。。。。。

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

9、查詢

  • /查詢內容:從游標所在行向下查詢。
  • ?查詢內容:從游標所在行向上搜尋。
  • n:下一個。
  • N:上一個。

10、替換

  1. :1,10s/old/new/g:替換1到10行的所有oldnew
    注:
    • 1,10s表示第一行到第十行,s代表替換。
    • /old/new表示把old換成new
    • g表示範圍內替換所有。(如果不加g,只會替換範圍內第一個old
  2. :%s/old/new/g:替換整個檔案的oldnew
    %表示範圍是整篇文件。

替換字串,舉幾個例子:

  • 在shell中#開頭是註釋,那我是否可以註釋檔案的前10行呢?手工一個一個註釋很麻煩,如何進行批量替換。
    :1,10s/^/#/g:註釋1到10行。
    提示:^正規表示式表示行首,把行首變成#
    :1,10s/^#//g:取消註釋。
    提示:^#意思是把行首的#去掉。正規表示式是包含匹配,如果只寫#,表示1到10行所有的#都去掉。
  • 在C語言,PHP語言等大多數語言中,是使用//開頭作為註釋的,用vim來寫這些程式語言指令碼,如何批量加入//註釋。
    :1,10s/^/\/\//g:1到10行,行首加入//
    提示:把行首^替換成\/\/(雙斜槓 //),\符號在命令列中代表換行,\符號在字串中代表轉義符。(轉義符就是把有特殊含義的字元轉換成普通的字串符號。)
    :1,10s/^\/\///g:取消1到10行行首的//
    提示:絕大多數的替換都用最上邊的兩種替換,下邊的兩個例子比較特殊,以後用到照著寫就好。

相關文章