Linux基礎知識篇三 -- vim的基本使用

我只擔心一件事,我怕我配不上自己所受的苦難.
            ——陀斯妥耶夫斯基


一、什麼是vim?

Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。
簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。 vim 則可以說是程序開發者的一項很好用的工具。
連 vim 的官方網站 (http://www.vim.org) 自己也說 vim 是一個程序開發工具而不是文字處理軟件。

二、vim的優缺點

2.1 可怕的 vim (缺點)

  • vim 學習門檻高
  • 操作奇怪
  • 不能用鼠標
  • 不配置不折騰的話,什麼功能都沒有,就是一個普通的編輯器
  • 不能管理項目
  • 沒有代碼高亮
  • 沒有代碼提示

    什麼都沒有
    如此來說, vim 沒有任何優勢…可是業內有一句話:
    世界上只有三種編輯器 vim, Emacs, 其他

2.2 vim的優點

vim是程序員得意助手,脫離鼠標,運指如飛,下面舉幾個簡單的vim的優勢的例子

高效率移動

在插入模式之外基本上來說,儘可能少的呆在插入模式裏面,因爲在插入模式裏面 VIM 就像一個“啞巴”編輯器一樣。 VIM 的強大之處在於他的命令模式!
使用 h、j、k、l
使用 VIM 高效率編輯的第一步,就是放棄使用箭頭鍵。使用 VIM就不用頻繁的在箭頭鍵和字母鍵之間移來移去了,這會節省很多時間。當命令模式時,可以用 h、j、k、l 來分別實現左、下、上、右箭頭的功能。 [2]
在當前行裏面有效的移動光標
很多編輯器只提供了簡單的命令來控制光標的移動(比如左、上、右、下、到行首/尾等)。VIM 則提供了很多強大的命令來滿足控制光標的慾望。當光標從一點移動到另外一點,在這兩點之間的文本(包括這兩個點)稱作被“跨過”,這裏的命令也被稱作是 motion。
在整個文件裏面有效移動光標
VIM 有很多命令,可以用來到達文件裏面你想到達的地方。

高效的輸入

使用關鍵詞自動完成
VIM 有一個非常漂亮的關鍵詞自動完成系統。使用關鍵詞自動完成功能,只需要輸入開始幾個字母(比如 iAmAL),然後按 (按住 Ctrl,再按 N)或者 。如果 VIM 沒有給出你想要的詞,繼續按,直到你滿意爲止,VIM 會一直循環它找到的匹配的字符串。
聰明的進入插入模式
VIM 提供了很多進入插入模式的命令。
有效的移動大段的文本
使用可視選擇(visual selections)和合適的選擇模式。不像最初的 VI,VIM 允許你高亮(選擇)一些文本,並且進行操作。
在可視選擇模式下剪切和拷貝
粘貼
粘貼很簡單,按 p。
使用多重剪貼板
很多編輯器都只提供了一個剪貼板。VIM 有很多。剪貼板在 VIM 裏面被稱爲寄存器(Registers)。你可以列出當前定義的所有寄存器名和它們的內容,命令爲“:reg”。最好使用小寫字母來作爲寄存器的名稱,因爲大寫的有些被 VIM 佔用了。
避免重複
在 VI 裏面,輸入 . (小數點符號),將會重複輸入的上一個命令。
使用數字也是 VIM 強大的而且很節省時間的重要特性之一。在很多 VIM 的命令之前都可以使用一個數字。

三、vim的基本使用

3.1 各模式的轉換圖

在這裏插入圖片描述

3.2 vim的三種工作模式

從2.1的圖可以看出,vim編輯器共有三種工作模式,他們分別是命令模式,輸入模式以及底行命令模式,下面依次介紹這幾種模式。

3.2.1 命令模式

首先創建文件,當我們在linux命令行輸入

vim hello.c

如果文件不存在,則會創建新的文件,如果存在,則編輯該文件,進入後會看到:
在這裏插入圖片描述

vim命令使用時有這幾個選項:

  1. 普通的用vim打開一個文件file
vim file
  1. 打開文件file,直接定位到第n行
vim +n file
  1. 打開文件file,直接定位到最後一行
vim + file
  1. 打開文件file,直接定位到匹配pattern的第一個位置
vim +/pattern file
  1. 以只讀方式打開file
vim -R file

當我們進入文件後,默認處於命令模式,輸入模式按下Esc可進入命令模式在這個模式下,我們可以做很多有關文檔編輯等事情(除了輸入代碼),例如:
我們可以複製一行或多行粘貼到指定位置,可以刪除多行,也可以跳轉到某一行,具體使用如下表:

光標的移動:

命令 效果
h 光標向左移動一個字符
j 光標向下移動一個字符
k 光標向上移動一個字符
l 光標向右移動一個字符
Ctrl + f 或 【PageDown】 向下翻一頁
Ctrl + b 或 【PageUp】 向上翻一頁
Ctrl + d 向下翻半頁
Ctrl + u 向上翻半頁
+ 光標移動到非空格符的下一行
- 光標移動到非空格的上一行
n<space> n是數字,跟空格,光標向這一行後移n個字符的距離
0 或 【HOME】 移動到這一行最前面的字符處
$ 或 【END】 移動到這一行最後一個字符處
H 這個屏幕最上方那一行的字符處
M 光標移動到這個屏幕的中央那一行的第一個字符
L 光標移動到這個屏幕的最下方那一行的第一個字符
G 移動到這個檔案的最後一行
nG n爲數字,移動到這個檔案的第n行
gg 移動到這個檔案的第一行
n n爲數字,光標向下移動n行

文檔操作

命令 效果
x,X 在一行字當中,x爲向後刪除一個字符(相當於[del]按鍵),X爲向前刪除一個字符(相當於[backspace]亦即是退格鍵)
nx n爲數字,連續向後刪除n個字符
dd 刪除光標所在的那一整行
ndd n爲數字,刪除光標所在的向下n行
d1G 刪除光標所在到第一行的所有數據
dG 刪除光標所在到最後一行的所有數據
d$ 刪除光標所在處,到該行的最後一個字符
d0 那個是數字的0,刪除光標所在處,到該行的第一個字符
yy 複製光標所在的那一行
nyy n爲數字,複製光標所在的向下n行
y1G 複製遊標所在列到第一行的所有數據
yG 複製遊標所在列到最後一行的所有數據
y0 複製光標所在的那個字符到該行行首的所有數據
y$ 複製光標所在的那個字符到該行行尾的所有數據
p,P p爲將已複製的數據在光標下一行貼上,P則爲貼在遊標上一行
J 將光標所在列與下一行的數據結合成同一行
c 重複刪除多個數據,例如向下刪除10行,[10cj]
u 復原前一個動作,undo
ctrl+r 重做上一個動作,redo
. 這就是小數點!意思是重複前一個動作的意思
ZZ 若文件沒有更動,則不儲存離開,若文件已經被更動過,則儲存後離開

3.2.2 底行命令模式

底行命令模式通常用來查找替換字符,或者保存文件退出編輯等,進入底行模式有這幾種方法:
命令行模式輸入 (就是輸入冒號)
輸入模式先Esc進入命令模式,在輸入冒號()進入底行模式

查找與替換

命令 效果
/word 向光標之下尋找一個名稱爲word的字符串
?word 向光標之上尋找一個字符串名稱爲word的字符串
n 這個n是英文按鍵,代表【重複前一個搜尋的動作】
N 這個N是英文按鍵,與n剛好相反,爲【反向】進行前一個搜尋動作。
: n1,n2s/word1/word2/g n1與n2爲數字。在第n1與n2行之間尋找word1這個字符串,並將該字符串取代爲word2
: 1,$s/word1/word2/g 從第一行到最後一行尋找word1字符串,並將該字符串取代爲word2
: 1,$s/word1/word2/gc 從第一行到最後一行尋找word1字符串,並將該字符串取代爲word2 ,且在取代前顯示提示字符給用戶確認(confirm)是否需要取代!

與行相關

命令 效果
:set nu 顯示行號
:set nonu 隱藏行號
:num 跳轉到第num行
:set paste 取消自動換行

底行模式的其他功能

命令 效果
: w 保存文件
: w! 強制寫保存(若沒有寫權限仍然無法保存)
: q 退出vim編輯器
: q! 強制退出,但不保存剛剛的修改
: wq! 強制寫保存退出
: w [filename] 將編輯的數據存儲成另一個文件
: r [filename] 在編輯的數據中,讀入另一個文件的數據。亦即將[filename]這個文件內容加到光標所在行後面
: n1,n2 w [filename] 將n1到n2內容存儲成filename這個文件
!command 暫時離開vi到指令列模式下執行command的顯示結果!例如[:! ls /home]即可在vi當中察看/home 底下以ls輸出的文件信息

一更加複雜的操作通常都由這些命令配合使用來完成。

3.2.3 輸入模式

輸入模式便是我們敲代碼的環節了,進入輸入模式有下面幾種方法,根據情況選擇:

在命令模式敲 效果
i,I 進入插入模式:i爲【從目前光標所在處插入】,I爲【在目前所在行的第一個非空格符處開始插入】
a,A 進入插入模式:a爲【從目前光標所在的下一個字符處開始插入】,A爲【從光標所在行的最後一個字符處開始插入】
o,O 進入插入模式:這是英文字母o的大小寫,o爲【在目前光標所在的下一行處插入新的一行】;O爲【在目前光標所在處的上一行插入新的一行】
r,R 進入取代模式:r只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下ESC爲止
ESC 退出編輯模式,回到一般模式中

直觀來看:
在這裏插入圖片描述

後面我會更新一篇關於vim的高階使用,因爲vim擁有許多插件,這些插件的使用將vim擡到了一個新的高度,讓工作效率大大提高!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章