VI
vi是“Visual interface”的簡稱,它在Linux上的地位就仿佛Edit程序在DOS上一樣。它可以執行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據自己的需要對其進行定制。Vi不是一個排版程序,它不象Word或WPS那樣可以對字體、格式、段落等其他屬性進行編排,它只是一個文本編輯程序。 vi沒有菜單,只有命令,且命令繁多。
Vi有三種基本工作模式:
- 命令模式
- 文本輸入模式
- 末行模式。
- 命令行模式
任何時候,不管用戶處于何種模式,只要按一下ESC鍵,即可使Vi進入命令模式;我們在shell環境(提示符為$)下輸入啟動Vi命令,進入編輯器時,也是處于該模式下。在該模式下,用戶可以輸入各種合法的Vi命令,用于管理自己的文檔。此時從鍵盤上輸入的任何字符都被當做編輯命令來解釋,若輸入的字符是合法的Vi命令,則Vi在接受用戶命令之后完成相應的動作。但需注意的是,所輸入的命令并不在屏幕上顯示出來。若輸入的字符不是Vi的合法命令,Vi會響鈴報警。 - 文本輸入模式
在命令模式下輸入插入命令i、附加命令a 、打開命令o、修改命令c、取代命令r或替換命令s都可以進入文本輸入模式。在該模式下,用戶輸入的任何字符都被Vi當做文件內容保存起來,并將其顯示在屏幕上。在文本輸入過程中,若想回到命令模式下,按鍵ESC即可。 - 末行模式
末行模式也稱ex轉義模式。在命令模式下,用戶按“:”鍵即可進入末行模式下,此時Vi會在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個“:”作為末行模式的提示符,等待用戶輸入命令。多數文件管理命令都是在此模式下執行的(如把編輯緩沖區的內容寫到文件中等)。末行命令執行完后,Vi自動回到命令模式。例如:
:sp newfile
則分出一個窗口編輯newfile文件。如果要從命令模式轉換到編輯模式,可以鍵入命令a或者i;如果需要從文本模式返回,則按Esc鍵即可。在命令模式下輸入“:”即可切換到末行模式,然后輸入命令。
- 命令模式進入文本模式
i: 插入光標前一個字符
I: 插入行首
a: 插入光標后一個字符
A: 插入行未
o: 向下新開一行,插入行首
O: 向上新開一行,插入行首
s:刪除一個字符后插入
S:刪除一行后插入
進入命令模式:ESC:從插入模式或末行模式進入命令模式
移動光標:
h: 左移
j: 下移
k: 上移
l: 右移
M: 光標移動到中間行
L: 光標移動到屏幕最后一行行首
G: 移動到指定行,行號 -G
w: 向后一次移動一個字
b: 向前一次移動一個字
{: 按段移動,上移
}: 按段移動,下移
Ctr-d: 向下翻半屏
Ctr-u: 向上翻半屏
Ctr-f: 向下翻一屏
Ctr-b: 向上翻一屏
gg: 光標移動文件開頭
G: 光標移動到文件末尾
- 命令行模式下分別按下
gg=G
四個按鍵,可以格式化代碼 -
行數G
可以跳轉到該行 - 末行模式下:
行數+回車
也可以跳轉到該行 - 光標定位在
{
,按下%
可以快速定位到對應的}
- 上面的操作針對
(
也適用 -
>>
相當于一個Tab鍵 -
<<
相當于刪除一個Tab鍵
- 刪除命令:
x: 刪除光標后一個字符,相當于 Del
X: 刪除光標前一個字符,相當于 Backspace
dd: 刪除光標所在行,n dd 刪除指定的行數
D: 刪除光標后本行所有內容,包含光標所在字符
d0: 刪除光標前本行所有內容,不包含光標所在字符
dw: 刪除光標開始位置的字,包含光標所在字符
- 按下
10dd
就會從當前光標向下刪除10行 -
d$
也是光標后本行所有內容,包含光標所在字符,和D
一樣 - 按下
v
,最下方出現可視
二字,即可開始選擇內容,再按下dd
,刪除選擇的內容
- 撤銷命令:
u: 一步一步撤銷
Ctr-r: 反撤銷
- 重復命令:
.: 重復上一次操作的命令
- 文本行移動:
>>: 文本行右移
<<: 文本行左移
- 復制粘貼:
yy: 復制當前行,n yy 復制 n 行
p: 在光標所在位置向下新開辟一行,粘貼
- 可視模式:
v: 按字符移動,選中文本
V: 按行移動,選中文本可視模式可以配合 d, y, >>, << 實現對文本塊的刪除,復制,左右移動
- 替換操作:
r: 替換當前字符
R: 替換當前行光標后的字符
- 查找命令:
/: str查找
n: 下一個
N:上一個
- 在編程中,光標定位在變量上,按下
*
鍵,可以定位到該變量的下一處引用
- 替換命令:把abc全部替換成123
末行模式下,將光標所在行的abc替換成123
:%s/abc/123/g
末行模式下,將第一行至第10行之間的abc替換成123
:1, 10s/abc/123/g
同上,但要用戶一個個確認是否替換
:%s/abc/123/gc
- 后面的/g表示全部,如果沒有/g就只是將每一行找到的第一個替換
-
s
只替換找到的第一個,%s
通篇查找替換 - 可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符
:s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/
- 查看 Man Page:
光標移動到函數上,Shift-k 光標移動到函數上,3Shift-k,查看第三章的 ManPage
shift-k
和K
等同
- 查看宏定義:
[+d: 可以查看宏定義,必須先包含此宏所在的頭文件
- 代碼排版:
gg=G: 代碼自動縮進排版
- vim里執行 shell 下命令:
末行模式里輸入!,后面跟命令
用vi文本編輯器來編輯生成文件
最基本用法
vi somefile.4
1、首先會進入“一般模式(命令模式)”,此模式只接受各種快捷鍵,不能編輯文件內容
2、按i鍵,就會從一般模式進入編輯模式,此模式下,敲入的都是文件內容
3、編輯完成之后,按Esc鍵退出編輯模式,回到一般模式;
4、再按:,進入“底行命令模式”,輸入wq命令,回車即可一些常用快捷鍵
一些有用的快捷鍵(在一般模式(命令模式)下使用):
a 在光標后一位開始插入
A 在該行的最后插入
I 在該行的最前面插入
gg 直接跳到文件的首行
G 直接跳到文件的末行
dd 刪除行,如果 5dd ,則一次性刪除光標后的5行
yy 復制當前行, 復制多行,則 3yy,則復制當前行附近的3行
p 粘貼
v 進入字符選擇模式,選擇完成后,按y復制,按p粘貼
ctrl+v 進入塊選擇模式,選擇完成后,按y復制,按p粘貼
shift+v 進入行選擇模式,選擇完成后,按y復制,按p粘貼
命令模式
- ctrl+b:上一頁
- ctrl+f:下一頁
查找并替換(在底行命令模式中輸入)
%s/sad/88888888888888 效果:查找文件中所有sad,替換為88888888888888
/you 效果:查找文件中出現的you,并定位到第一個找到的地方,按n可以定位到下一個匹配位置(按N定位到上一個)