Vim不常見但是很實用的命令技巧

2021-07-24 05:57:56 字數 3043 閱讀 8095

linux vi/vim

vim不常見但是很實用的命令技巧

:x
和下面的命令是等價的:

:wq
都是儲存當前檔案並退出。

區別:這兩個命令實際上並不完全等價,當檔案被修改時兩個命令時相同的。

但如果未被修改,使用 :x 不會更改檔案的修改時間,而使用 :wq 會改變檔案的修改時間。

在插入模式下,你可以使用 ctrl+r 鍵然後輸入 =,再輸入乙個簡單的算式。按 enter 鍵,計算結果就會插入到檔案中。例如,嘗試輸入:

ctrl+r '=3+6' enter
然後計算結果「9」會被插入到檔案中。

當你很快地打字時,很有可能會連續輸入同乙個單詞兩次,就像 this this。這種錯誤可能騙過任何乙個人,即使是你自己重新閱讀一遍也不可避免。幸運的是,有乙個簡單的正規表示式可以用來預防這個錯誤。使用搜尋命令(預設時 /)然後輸入:

\(

\<

\w\+

\>

\)\_s*\1

這會顯示所有重複的單詞。要達到最好的效果,不要忘記把下面的命令:

set hlsearch
放到你的 .vimrc 檔案中高亮所有的匹配。

語法格式如下:

:ab

[縮寫]

[要替換的文字]

乙個通用的例子是:

:ab asap as soon as possible
會把你輸入的 「asap」 替換為 「as soon as possible」。

每當你開啟乙個你沒有寫入許可權的檔案(比如系統配置檔案)並做了一些修改,vim 無法通過普通的 「:w」 命令來儲存。

你不需要重新以 root 方式開啟檔案再進行修改,只需要執行:

:w

!sudo

tee%

這會直接以 root 方式儲存。

要確保使用者在

這裡不說外掛程式提供的自動補全,僅僅說vim 預設有自動補全的功能。的確這個功能是很基本的,並且可以通過外掛程式來增強,但它也很有幫助。

vim 嘗試通過已經輸入的單詞來**單詞的結尾。比如當你在同乙個檔案中第二次輸入 「xiaogongjiang」 時,僅僅輸入 「x」或者多一些, 然後保持在插入模式,按ctrl+n鍵就可以看到 vim 為你補全了單詞。很簡單,但也很有用。

vimdiff 命令,它可以使用分離模式開啟 vim 並比較兩個檔案的不同。語法如下:

$ vimdiff

[檔案1]

[檔案2]

但同樣的結果也可以通過下面的 vim 命令來獲得:

:diffthis
首先在 vim 中開啟原始檔案。然後使用分離模式帶來第二個檔案:

:vsp

[檔案2]

最後在第乙個緩衝區裡輸入:

:diffthis
通過 ctrl+w 來切換緩衝區並再次輸入:

:diffthis
這樣兩個檔案中不同的部分就會被高亮。

可以直接在乙個緩衝區裡使用命令 :windo diffthis,而不用輸入 :diffthis 兩次)

vim 會記錄檔案的更改,你很容易可以回退到之前某個時間。該命令是相當直觀的。比如:

:earlier

1m

會把檔案回退到 1 分鐘以前的狀態。

注意,你可以使用下面的命令進行相反的轉換:

:later
當我開始使用 vim 時,一件我總是想很方便做的事情是如何輕鬆的刪除方括號或圓括號裡的內容。

一般模式下轉到開始的標記,

然後使用下面的語法:

di

[標記]

比如,把游標放在開始的圓括號上,使用下面的命令來刪除圓括號內的文字:

di(
如果是方括號或者是引號,則使用:

di{
和:

和刪除標記內部有些相似,但目的不同。命令如下:

dt

[標記]

會刪除所有游標和標記之間的內容(保持標記不動),如果在同一行有這個標記的話。例如

dt.
會刪除至句子的末尾,但保持 『.』 不動。

你可以把 vim 和 xxd 功能連起來來把檔案轉換為十六進製制模式。命令如下:

:%!xxd
類似的,你可以通過下面的命令恢復原來的狀態:

:%!xxd -r
ctrl+o
來回到之前修改的地方

類似的:

ctrl+i
會回退上面的跳動。

這會生成乙個 html 檔案來顯示文字,並在分開的視窗顯示源**:

:%tohtml

liunx 不常用,但是實用命令

檔案重定向 ls a.txt 把ls輸出的內容寫入a.txt 也可以是 exe a.txt 檔案附件重定向 用法都一樣。只是不會覆蓋之前的內容,會追加在之前的的檔案後面 萬用字元。是常用 abc 是區間。窮舉 所以中括號裡的東西,只要是滿足abc中任何乙個就可以 a z 代表。是ascill碼。a ...

mysql不常用,但很實用的命令

設 資料庫名 master,master資料庫中的乙個表名 ent datapool 1 進入特定資料庫 例如 use master 2 顯示庫中的所有表名 例如 show master 3 檢視表中所有字段資訊 例如 desc ent datapool 4 查詢 指定 資料庫中含有某個欄位的表有哪...

挖一挖不常用到而又很實用的過載 Split

split這個基本上所有的程式開發人員都用到,一般使用單字元和長字串拆分字串的較多,其實還有乙個過載非常好用,那就是多種組合字元來進行拆分。例如 aaaaaaaaaabbbbbbbbbbccccccc cccccc 通過 組合字元進行拆分值為aaaaaaaaaa bbbbbbbbbb ccccccc...