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
顯示。
如下圖所示:
: 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,10s/old/new/g
:替換1到10行的所有old
為new
。
注:1,10s
表示第一行到第十行,s
代表替換。/old/new
表示把old
換成new
。g
表示範圍內替換所有。(如果不加g
,只會替換範圍內第一個old
)
:%s/old/new/g
:替換整個檔案的old
為new
。
%
表示範圍是整篇文件。
替換字串,舉幾個例子:
- 在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行行首的//
。
提示:絕大多數的替換都用最上邊的兩種替換,下邊的兩個例子比較特殊,以後用到照著寫就好。