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

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行行首的//
    提示:絕大多數的替換都用最上邊的兩種替換,下邊的兩個例子比較特殊,以後用到照着寫就好。