vi 工作模式分為指令模式和輸入模式,一般情況下在指令模式下,可敲入vi指令,進入輸入模式下時可以編輯要編輯的文本,指令 a A i I o O c C s S R 可進入輸入模式,在輸入模式下按 ESC 鍵可推出輸入模式,回到指令模式,在指令模式中敲入: 指令,則可進入ex方式,在螢幕底部出現提示符: ,此時可使用任意ex指令,螢幕底行也用來作/ ? ! 指令的提示行,大多數指令可以在其前面加數字,表示指令執行的重複次數。
下面簡單介紹一下vi 的指令集,^ 表示(CTRL)鍵
^B 退回前一頁,前面加數字表示重複次數,每次換頁時
保留上一頁的兩行
^D 在指令模式下,表示下滾螢幕的一半,在輸入模式下,表示回退至
左邊的自動縮進處
^E 顯示螢幕底線之下的一行
^F 前進一頁,前面加數字表示重複次數,每次換頁時
保留上一頁的兩行
^G 顯示目前檔案名,目前行号和檔案總行數,并用百分号目前行在
整個檔案中的位置
^H(倒退) 在指令模式下,光标左移一格;在輸入模式下,删去前面的字元
^I(TAB) 在輸入模式下,産生一串空格
^J(LF) 光标下移一行
^L 重新整理螢幕,即将螢幕重新顯示
^M(回車) 在指令模式下,光标移動至下行開頭
在輸入模式下,開辟一新行
^N 光标下移一行
^P 光标上移一行
^Q 在輸入模式下,将其後的非列印字元作為正文插入
^R 重新整理螢幕
^U 螢幕上滾一半,前面加數字時表示上滾的行數,此數字對
以後的^D ^U 指令有效
^V 在輸入模式下,将其後的非列印字元作為正文插入
^W 在輸入模式下,使光标回退一個字
^Y 顯示螢幕底線之上的一行
^Z 暫停編輯,退回上層Shell
^[(ESC) 退出輸入模式,回到指令模式
! 暫時退出編輯,執行Shell指令
"(雙引号) 用于标志有名緩沖區,編号緩沖區1-9用于儲存被删去的正文,字
母名緩沖區a-z供使用者存放自定義的正文
$ 将光标移動到目前行尾,前加數字則表示前移行數,如2$表示移動
到下一行行尾
% 将光标移動到配對的小括号()或大括号{}上去
( 退回句子開頭
) 前移到句子開頭
減号- 退到上一行第一個非空格字元
. 重複上一次改變緩沖區内容的指令
/ 模式向前搜尋模式,将光标移動到模式出現處,模式是一個正規
表達式,(參看 grep)
: 在螢幕底部提示:,其後可使用ex指令
? 功能同 / ,但方向是向前查找
[[ 光标回退至前一節分界處
\ 轉意符
]] 光标前移至節分界處
^(不是CTRL) 光标移至目前行第一個非空字元上
’ 連續兩個’'表示将光标移至其移動前的位置,'後跟字母表示光标字
母标記的行首(參看 m 指令)
A 在行尾插入正文,進入輸入模式
B 光标回退一個字
C 替換光标後的内容
D 删除光标後的内容
E 光标前移到字尾
F 字元在目前行向左查找指定字元
G 光标移動到其前面數字指定的行,若未指定則移動到最後一行
H 光标移動到螢幕頂行,若前面有數字,則移動到螢幕上該數字
指定的行
I 在行開頭插入正文
J 連接配接兩行,若前面有數字則連接配接數字指定的行
L 光标移動到螢幕底行,若前面有數字,則移動到螢幕底線往上數該
數字指定的行
M 光标移動到螢幕中線
N 使用模式查找/或?時,重複找下一個比對的模式,但方向與上次相
反,其功能同 n ,但方向相反
O 在目前行上開辟一新行
P 将上次被删除的正文插入光标前面,可在其前面加緩沖區編号,編
号1-9用于儲存被删去的正文,字母名緩沖區a-z供使用者存放自定
義的正文
Q 從vi 推出進入ex指令狀态
R 替換字元串
S 替換整行
T 字元向左查找字元
U 将目前行恢複至第一次修改前的狀态
W 光标移至下一個字首
X 删除光标前的字元
Y 将目前行存入無名緩沖區,前面加數字表示存入的行數,也可用有
名緩沖區來儲存,以後可用指令p或P将其取出
ZZ 存盤退出vi
a 光标後插入正文
b 光标回退至上一個字首
cw 替換目前字
c) 替換目前句子
dw 删除一個字
dd 删除一行
e 光标移到下一個字末
f 字元在目前行向前查找字元
h 光标左移一格
i 在光标前插入正文
j 光标下移一行
k 光标上移一行
l 光标右移一格
m 字母用字母标記目前行,以後可用 '字母使光标移動到目前行,
(參看’指令)
n 重複上次 / 或 ? 指令
o 在目前行下開辟一新行
p 将使用者緩沖區内容放到光标位置(參看P指令)
r 替換目前字元
s 用一串字元替換目前字元
t 字元光标移動至字元前
u 取消上次操作
w 光标移至下一字首
x 删除目前字元
yw 将目前字存入無名緩沖區,前面可加"x,表示存入名字為x的有名
緩沖區(x為a-z),也可加數字表示存入的字數,以後可用P或p命
令取出
yy 将目前行存入無名緩沖區,用法參看yw
{ 光标移動至前一段開頭
| 光标移至行首,若前面加數字,則移到數字指定行的行首
} 光标移至下一段開頭
在:提示符下,常用指令如下:
:w 目前檔案存盤
:w! 強制存盤
:w 檔案将内容寫入指定檔案
:w! 檔案強制寫入指定檔案
:x,y w 檔案将 x至 y 行寫入指定檔案中
:r 檔案将檔案讀到光标位置
:r ! 指令将系統指令的輸出讀到光标位置
:q 退出編輯
:q! 強制退出
:x 與指令ZZ相同
:e 檔案名編輯另一檔案
:e ! 重新編輯檔案,放棄任何改變
:sh 執行sh,結束後回到編輯
:! 指令執行指令後回到編輯
:n 編輯下一檔案
:n 檔案表重新定義待編輯檔案表
:set 設定 vi 的選項,例如 set nu 表示每行前顯示行号,在選項前
加no則表示清除該選項,例如 set nonu 表示每行前不顯示行
号,下面是一些常用的選項:
ai 自動縮進
aw 編輯下一檔案前自動存盤
ic 查找字元串時不區分大小寫
nu 每行前顯示行号
sm 輸入)及}時顯示與之配對的( 或 {
slow 插入時延遲螢幕重新整理
ws 使查找能繞過檔案尾從頭進行
wa 寫檔案之前不作對檔案的檢查
替換字元
:%s/^M//g 将DOS回車換行替換為UNIX回車 ^M輸入方法 CTRL+V CTRL+M
:%s/123/456/g 将所有123替換為456
:10,$s/aaa/bbb/g 從第10行到結尾的aaa替換成bbb
非常簡單的一個操作,隻需2步,完美解決Ubuntu下vi編輯器方向鍵變字母的問題。
一.執行指令 sudo apt-get remove vim-common
二.執行指令 sudo apt-get install vim
設定tab占用空格數
set tabstop=4
set ts=4