文章出處

寫這篇文章是因為在更新我的一篇博客 Git的其他用法 的時候,里面的修改已經提交的commit說明這一部分需要用到vim。

在使用git config --global --edit或者git rebase -i commiteId^的時候,git會進入文本編輯模式。默認的編輯器是vim,你可以在Git安裝的上層目錄\Git\usr\bin里找到vim.exe。

這讓我想起以前使用VI(Visual Interface)和VIM(VI IMproved)編輯器時的懵逼。現在干脆把vim的基本使用整理出來。

vim編輯器有兩種模式,分別為命令模式編輯模式

一、命令模式

當你剛進入文本編輯器的時候,處于編輯器的命令模式。這個命令模式可以做很多事情。這里介紹幾個常用的:

命令 對應英文單詞 說明
i insert 進入編輯模式,將光標定位在當前字符的前面
v visual mode 按一下v相當于你平時在MS Word里面按住shift,用來選擇(高亮)一段文本
y yank 和復制的功能一樣(英文意思為:猛拉)
p paste 粘貼到當前字符前面
x x就是"叉"(或者“干掉”)的意思 刪除被高亮的字符(光標所在的字符也算是被高亮的字符)
yy yank 復制光標所在行
dd delete 刪除光標所在行
u undo 撤銷上一個修改
ctrl + r redo 不小心撤銷過多的時候使用
/想搜索的字符串 /之后無空格,按Enter鍵開始搜索。按n(即next)往下搜索,按N往上搜索
:1,$ s /text1 /text2 /c substitute text1替換成text21,$表示行數范圍,其中 $ 表示文檔末尾。當你把數字1換成小數點. 時,表示從當前位置開始搜索(跟 bash 中用 . 表示當前位置一樣)。/c表示讓你選擇找到之后的動作:y(yes)表示替換當前所選;n(next)表示跳過當前所選;a(all)表示當前所選及剩下的全部替換,不再確認;q(quit)表示停止替換。注意前面的冒號,與下面的命令類似。
:q! quit discard 舍棄修改并退出
:wq write then quit 保存修改并退出

看到:q!這個命令,可能有點懵圈。你沒看錯,得先輸入一個冒號:,再去輸入q!。最開始的時候我不知道要輸入冒號,結果半天退不出來。

重要的說明
i的說明中,你可能不太理解為什么說“將光標定位在當前字符的前面”。在vim編輯器的命令模式下,光標是覆蓋在字符上的。當你按i,它就將光標定位到當前字符的前面。與此相對的,按a(即append)時,光標就定位到當前字符的后面。

如圖所示:

找了半天終于找到一個不錯的在線vim編輯器:Vim.js
還有一款加載比較慢的:Interactive Vim tutorial - sandbox

點進去后你能直觀地看到光標是覆蓋到字符上的。你可以分別按ia來查看效果。

至于其他命令,還是看圖比較直觀:

中文版圖源鏈接

英文版圖源鏈接

當然,你也可以下載vim的文檔。這里是官方文檔:vimbook-OPL.pdf

二、編輯模式

當你按i進入編輯模式的時候,基本上就可以照常編輯文本了。

除了正常的輸入外,這些按鍵也可以正常使用:del(往光標后刪除),back(也就是鍵盤上的←,往光標前刪除),enter(回車鍵),tab(制表符)

但是注意,想要選擇字符或者復制粘貼等的時候,必須退出編輯模式,到命令行模式去執行操作。

當你想要退出編輯模式的時候,按esc鍵。注意,這時是退到命令模式,不是完全退出。你得在命令模式輸入命令來完全退出編輯。

知道了以上這些介紹,你可以進行基本的編輯了。

三、正則表達式

在命令模式點擊 / 后,會進入搜索模式。它會搜索 / 之后的 pattern 。

在搜索和替換的時候,如果不能用正則表達式,極可能耗費大量時間。Vim 是支持正則表達式的,不過 Vim 正則表達式的寫法跟通常的寫法有點不一樣。

比如你要匹配 dekkkldetttl ,你可以這么寫:

/de.\+l

這里的 / 是之前輸入的,表示搜索功能。后面的 de.\+l 是正則表達式。這里與普通的正則表達式不同的地方在于用 \+ 來表示匹配一次或多次,而不是 +

詳細的規則可以看:VIM 正則參考

除了搜索之外,替換也能使用正則表達式。替換的語法和上面表格中的一致, text1 這個部分可以是正則表達式。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()