一、一般模式:刪除、復制與粘貼類命令
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡程序員、網(wǎng)頁設計師等,應用各種網(wǎng)絡程序開發(fā)技術(shù)和網(wǎng)頁設計技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)公司專業(yè)提供網(wǎng)站設計制作、成都做網(wǎng)站,網(wǎng)頁設計,網(wǎng)站制作(企業(yè)站、響應式網(wǎng)站開發(fā)、電商門戶網(wǎng)站)等服務,從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗的提升,我們力求做到極致!
x,X
x為向后刪除一個字符,X為先前刪除一個字符
nx(n代表數(shù)字)
向后刪除n個字符
dd
刪除當前行
D
刪除當前行所有字符,試成為空行
ndd(n代表數(shù)字)
刪除光標所在行的向下n列
d1G
刪除光標所在行到第一行的所有數(shù)據(jù)
dG
刪除光標所在行到最后一行的所有數(shù)據(jù)
yy
復制光標所在行
y1G
復制光標所在行到第一行的所有數(shù)據(jù)
yG
復制光標所在行到最后一行的所有數(shù)據(jù)
ynj(n代表數(shù)字)
復制光標所在行向下n+1行
dnj(n代表數(shù)字)
刪除光標所在行向下n+1行
p,P
p為復制的數(shù)據(jù)粘貼在光標的下一行,P為復制的數(shù)據(jù)粘貼在光標的上一行
J
將光標所在行與下一行的數(shù)據(jù)結(jié)合成一行
u
恢復前一個動作(undo)
二、編輯模式命令
i,I
i為在當前光標所在處插入輸入的文字,I為在光標所在行第一個非空字符插入輸入的文字
a,A
a為在當前光標所在處下一個字符插入輸入的文字,A為在光標所在行最后一個字符的下一個字符處插入輸入的文字
o,O
o為在光標所在行的下一行行首開始插入字符,O為在光標所在行的上一行行首開始插入字符
r,R
r為替換光標所在那一個字符,R為一直替換光標所指的文字,直到退出
Esc
退出,回到一般模式
三、命令模式
h
光標向左移一個字符
j
光標向下移一個字符
k
光標向上移一個字符
l
光標向右移一個字符
Ctrl+f
屏幕向下翻一頁
Ctrl+b
屏幕向上翻一頁
Ctrl+d
屏幕向下翻半頁
Ctrl+u
屏幕向上翻半頁
+
光標移動到下一行的第一個非空字符
-
光標移動到當前行的第一個非空字符
n空格(n代表數(shù)字)
光標向當前行向右移動n個字符
0(數(shù)字0)
光標移動到當前行的第一個字符(可以為空字符,注意與-區(qū)分)
$
光標移動到當前行的最后一個字符(可以為空字符,注意與-區(qū)分)
H
光標移動到當前屏幕最上方的那一行的第一個非空字符
M
光標移動到當前屏幕最中間那一行的第一個非空字符
L
光標移動到當前屏幕最下方的那一行的第一個非空字符
G
光標移動到該文章最后一行的第一個非空字符
nG(n代表數(shù)字)
光標移動到該文章第n行的第一個非空字符
n
光標從當前行向下移動n行的第一個非空字符
/word
在光標之后查找word字符串
?word
在光標之前查找word字符串
:s/word1/word2/g
在光標當前行查找word1,并替換成word2
:n1,n2s/word1/word2/g
在第n1行與第n2行之間查找word1,并替換成word2
:%s/word1/word2/g
整個文章查找word1,并替換成word2
:w
將編輯的數(shù)據(jù)保存到硬盤文件中
:w
[filename]
將編輯后的數(shù)據(jù)保存到硬盤的另一個文件中
:r
[filename]
在編輯數(shù)據(jù)時,讀入另一個文件中的數(shù)據(jù),即將filename文件中的內(nèi)容加到光標所在行下一行
:wq或:x
保存并退出
:q
退出,適用于未修改的文件
:q!
強制退出,適用于修改文件后不保存退出
:set
nu
顯示行號
:set
nonu
取消行號
:n1,n2
w
[filename]
將n1到n2行的內(nèi)容保存到名為filename的文件中
[語法]:vi [-wn] [-R] 文件…
[說明]: vi 是一個基于行編輯器 ex 上的全屏幕編輯器,可以在vi 中使用 ex,ed的全部命令,vi選項中 -wn 指將編輯窗口大小置為n行,-R 為將編輯的文件置為只讀模式, vi 工作模式分為命令模式和輸入模式,一般情況下在命令模式下,可敲入vi命令,進入輸入模式下時可以編輯要編輯的文本,命令 a A i I o O c C s S R 可進入輸入模式,在輸入模式下按 ESC 鍵可推出輸入模式,回到命令模式,在命令模式中敲入: 命令,則可進入ex方式,在屏幕底部出現(xiàn)提示符 : ,此時可使用任意ex命令,屏幕底行也用來作/ ? ! 命令的提示行,大多數(shù)命令可以在其前面加數(shù)字,表示命令執(zhí)行的重復次數(shù),下面簡單介紹一下vi 的命令集,^ 表示(CTRL)鍵
^B 退回前一頁,前面加數(shù)字表示重復次數(shù),每次換頁時
保留上一頁的兩行
^D 在命令模式下,表示下滾屏幕的一半,在輸入模式下,表示回退至
左邊的自動縮進處
^E 顯示屏幕底線之下的一行
^F 前進一頁,前面加數(shù)字表示重復次數(shù),每次換頁時
保留上一頁的兩行
^G 顯示當前文件名,當前行號和文件總行數(shù),并用百分號當前行在
整個文件中的位置
^H(退格) 在命令模式下,光標左移一格;在輸入模式下,刪去前面的字符
^I(TAB) 在輸入模式下,產(chǎn)生一串空格
^J(LF) 光標下移一行
^L 刷新屏幕,即將屏幕重新顯示
^M(回車) 在命令模式下,光標移動至下行開頭
在輸入模式下,開辟一新行
^N 光標下移一行
^P 光標上移一行
^Q 在輸入模式下,將其后的非打印字符作為正文插入
^R 刷新屏幕
^U 屏幕上滾一半,前面加數(shù)字時表示上滾的行數(shù),此數(shù)字對
以后的^D ^U 命令有效
^V 在輸入模式下,將其后的非打印字符作為正文插入
^W 在輸入模式下,使光標回退一個字
^Y 顯示屏幕底線之上的一行
^Z 暫停編輯,退回上層Shell
^[(ESC) 退出輸入模式,回到命令模式
! 暫時退出編輯,執(zhí)行Shell命令
(雙引號) 用于標志有名緩沖區(qū),編號緩沖區(qū)1-9用于保存被刪去的正文,字
母名緩沖區(qū)a-z供用戶存放自定義的正文
$ 將光標移動到當前行尾,前加數(shù)字則表示前移行數(shù),如2$表示移動
到下一行行尾
% 將光標移動到配對的小括號()或大括號{}上去
( 退回句子開頭
) 前移到句子開頭
- 退到上一行第一個非空格字符
. 重復上一次改變緩沖區(qū)內(nèi)容的命令
/ 模式向前搜索模式,將光標移動到模式出現(xiàn)處,模式是一個正規(guī)
表達式,(參看 grep)
: 在屏幕底部提示:,其后可使用ex命令
? 功能同 / ,但方向是向前查找
[[ 光標回退至前一節(jié)分界處
\ 轉(zhuǎn)意符
]] 光標前移至節(jié)分界處
^(不是CTRL) 光標移至當前行第一個非空字符上
‘ 連續(xù)兩個”表示將光標移至其移動前的位置,’后跟字母表示光標字
母標記的行首(參看 m 命令)
A 在行尾插入正文,進入輸入模式
B 光標回退一個字
C 替換光標后的內(nèi)容
D 刪除光標后的內(nèi)容
E 光標前移到字尾
F 字符 在當前行向左查找指定字符
G 光標移動到其前面數(shù)字指定的行,若未指定則移動到最后一行
H 光標移動到屏幕頂行,若前面有數(shù)字,則移動到屏幕上該數(shù)字
指定的行
I 在行開頭插入正文
J 連接兩行,若前面有數(shù)字則連接數(shù)字指定的行
L 光標移動到屏幕底行,若前面有數(shù)字,則移動到屏幕底線往上數(shù)該
數(shù)字指定的行
M 光標移動到屏幕中線
N 使用模式查找/或?時,重復找下一個匹配的模式,但方向與上次相
反,其功能同 n ,但方向相反
O 在當前行上開辟一新行
P 將上次被刪除的正文插入光標前面,可在其前面加緩沖區(qū)編號,編
號1-9用于保存被刪去的正文,字母名緩沖區(qū)a-z供用戶存放自定
義的正文
Q 從vi 推出進入ex命令狀態(tài)
R 替換字符串
S 替換整行
T 字符 向左查找字符
U 將當前行恢復至第一次修改前的狀態(tài)
W 光標移至下一個字首
X 刪除光標前的字符
Y 將當前行存入無名緩沖區(qū),前面加數(shù)字表示存入的行數(shù),也可用有
名緩沖區(qū)來保存,以后可用命令p或P將其取出
ZZ 存盤退出vi
a 光標后插入正文
b 光標回退至上一個字首
cw 替換當前字
c) 替換當前句子
dw 刪除一個字
dd 刪除一行
e 光標移到下一個字末
f 字符 在當前行向前查找字符
h 光標左移一格
i 在光標前插入正文
j 光標下移一行
k 光標上移一行
l 光標右移一格
m 字母 用字母標記當前行,以后可用 ‘字母使光標移動到當前行,
(參看’命令)
n 重復上次 / 或 ? 命令
o 在當前行下開辟一新行
p 將用戶緩沖區(qū)內(nèi)容放到光標位置(參看P命令)
r 替換當前字符
s 用一串字符替換當前字符
t 字符 光標移動至字符前
u 取消上次操作
w 光標移至下一字首
x 刪除當前字符
yw 將當前字存入無名緩沖區(qū),前面可加x,表示存入名字為x的有名
緩沖區(qū)(x為a-z),也可加數(shù)字表示存入的字數(shù),以后可用P或p命
令取出
yy 將當前行存入無名緩沖區(qū),用法參看yw
{ 光標移動至前一段開頭
| 光標移至行首,若前面加數(shù)字,則移到數(shù)字指定行的行首
} 光標移至下一段開頭
在:提示符下,常用命令如下:
:w 當前文件存盤
:w! 強制存盤
:w 文件 將內(nèi)容寫入指定文件
:w! 文件 強制寫入指定文件
:x,y w 文件 將 x至 y 行寫入指定文件中
:r 文件 將文件讀到光標位置
:r ! 命令將系統(tǒng)命令的輸出讀到光標位置
:q 退出編輯
:q! 強制退出
:x 與命令ZZ相同
:e 文件名 編輯另一文件
:e ! 重新編輯文件,放棄任何改變
:sh 執(zhí)行sh,結(jié)束后回到編輯
:! 命令 執(zhí)行命令后回到編輯
:n 編輯下一文件
:n 文件表 重新定義待編輯文件表
:set 設置 vi 的選項,例如 set nu 表示每行前顯示行號,在選項前
加no則表示清除該選項,例如 set nonu 表示每行前不顯示行
號,下面是一些常用的選項:
ai 自動縮進
aw 編輯下一文件前自動存盤
ic 查找字符串時不區(qū)分大小寫
nu 每行前顯示行號
sm 輸入)及}時顯示與之配對的( 或 {
slow 插入時延遲屏幕刷新
ws 使查找能繞過文件尾從頭進行
wa 寫文件之前不作對文件的檢查
替換一個字符:在命令模式下選中要替換的字符,按r,再按替換后的字符。
替換全文中所有的字符:可以在命令模式下輸入:% s/str1/str2/g
vi profile
返回
:q 退出
:wq或者:x或者shift+zz 保存并退出
:q! 不保存并退出
:w 保存
:w! 強制保存
編輯到輸入模式:
i 在當前光標前面輸入
I 在當前光標所在行的行首,轉(zhuǎn)換為輸入模式
a 在當前光標后面輸入
A 在當前光標所在行的行尾,轉(zhuǎn)換為輸入模式
o 在當前光標所在行的下方,新建一行,并轉(zhuǎn)為輸入模式
O 在當前光標所在行的上方,新建一行,并轉(zhuǎn)為輸入模式
1、 移動光標
字符:方向鍵上下左右或者鍵盤kjhl(上下左右)
單詞:w移至下一個單詞的詞首;e跳至當前或下一個單詞的詞尾;b跳至當前或前一個單詞的詞首
行內(nèi):0絕對行首;^行首的第一個非空白字符;$絕對行尾
行間:G文章末尾;3G第3行;gg文章開頭
翻屏:ctrl f【往后翻】;Ctrl b【往前翻】
2、 刪除、替換單個字符
x刪除光標位置字符;3x刪除光標開始3個字符;r替換光標位置字符
dw刪除一個單詞;4dw刪除光標開始的4個單詞;dd刪除光標所在行;5dd刪除光標開始的5行
3、復制粘貼剪切
yw復制一個單詞,p在該行粘貼單詞;yy復制整行,p在該行下方粘貼整行
dd剪切整行,p再粘貼整行;dw剪切一個單詞,p再粘貼一個單詞
4、 撤銷重做
u:撤銷;ctrl+r:重做撤銷的操作;.重復上一步的操作【假設先dd,再.,會再執(zhí)行dd命令】
1、 set設置
set nu
set nonu
set readonly #設置只讀文件,不能修改,只在當前環(huán)境有效,退出文件,再次打開,這個只讀就無效了
set noreadonly #取消只讀
2、 /查找
/after查找文檔中的after【可以找到所有的after】,n向下翻,N向上翻
:/after查找文檔中的after所在行【可以找到所有的after】,n向下翻,N向上翻
3、!執(zhí)行命令
比如:查找root目錄
:!ls /root/
4、 查找并替換
格式
【 :查找范圍s/查找的詞/要替換的詞/ 】
或者【:查找范圍s#查找的詞#要替換的詞# 】
或者【:查找范圍s%查找的詞%要替換的詞%】,
即分隔符可以是/、#、%
其中, 查找范圍 包括【.當前光標行】;【$末尾行】;【%全文】;【g一行內(nèi)全部替換】;【i忽略大小寫】
比如 【 :.,$s/after/before/】 表示在當前光標行【.】到末尾【$】這個范圍內(nèi),將after替換為before, 但是如果一行有多個after的話,只會把第一個after替換掉 。
比如 【 :%s/after/before/】 表示在全文,將after替換為before,但是如果一行有多個after的話,只會把第一個after替換掉。
比如 【:%s/after/before/g】 ,表示在全文,將after替換為before,但是 如果一行有多個after的話,會把該行所有after替換掉,因為在命令里面加了g 。
比如 【:%s/after/before/gi】 ,表示在全文,將after替換為before,且忽略大小寫并替換一行內(nèi)所有after。
比如 【 :%d或者dG】 ,表示刪除全文
比如 【:1,$-4d】 ,表示刪除第一行到倒數(shù)第5行的數(shù)據(jù)
比如 【:1,4y】 ,表示復制1到4行,再按p可粘貼這4行
進入vi的命令
vi filename :打開或新建文件,并將光標置于第一行首
vi +n filename :打開文件,并將光標置于第n行首
vi + filename :打開文件,并將光標置于最后一行首
vi +/pattern filename:打開文件,并將光標置于第一個和pattern匹配的串處
vi -r filename :在上次正用vi編輯時發(fā)生系統(tǒng)崩潰,恢復filename
vi filename....filename :打開多個文件,依次進行編輯
移動光標類命令
h :光標左移一個字符
l :光標右移一個字符
space:光標右移一個字符
Backspace:光標左移一個字符
k或Ctrl+p:光標上移一行
j或Ctrl+n :光標下移一行
Enter :光標下移一行
w或W :光標右移一個字至字首
b或B :光標左移一個字至字首
e或E :光標右移一個字至字尾
) :光標移至句尾
( :光標移至句首
}:光標移至段落開頭
{:光標移至段落結(jié)尾
nG:光標移至第n行首
n+:光標下移n行
n-:光標上移n行
n$:光標移至第n行尾
H :光標移至屏幕頂行
M :光標移至屏幕中間行
L :光標移至屏幕最后行
0:(注意是數(shù)字零)光標移至當前行首
$:光標移至當前行尾
屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
插入文本類命令
i :在光標前
I :在當前行首
a:光標后
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字符
R:替換當前字符及其后的字符,直至按ESC鍵
s:從當前光標位置處開始,以輸入的文本替代指定數(shù)目的字符
S:刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW:修改指定數(shù)目的字
nCC:修改指定數(shù)目的行
刪除命令
ndw或ndW:刪除光標處開始及其后的n-1個字
do:刪至行首
d$:刪至行尾
ndd:刪除當前行及其后n-1行
x或X:刪除一個字符,x刪除光標后的,而X刪除光標前的
Ctrl+u:刪除輸入方式下所輸入的文本
搜索及替換命令
/pattern:從光標開始處向文件尾搜索pattern
?pattern:從光標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
:s/p1/p2/g:將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換
選項設置
all:列出所有選項設置情況
term:設置終端類型
ignorance:在搜索中忽略大小寫
list:顯示制表位(Ctrl+I)和行尾標志($)
number:顯示行號
report:顯示由面向行的命令修改過的數(shù)目
terse:顯示簡短的警告信息
warn:在轉(zhuǎn)到別的文件時若沒保存當前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶“”的特別字符
nowrapscan:禁止vi在搜索到達文件兩端時,又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
最后行方式命令
:n1,n2 co n3:將n1行到n2行之間的內(nèi)容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內(nèi)容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內(nèi)容刪除
:w :保存當前文件
:e filename:打開文件filename進行編輯
:x:保存當前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:執(zhí)行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之,若不指定n1,n2,則表示將整個文件內(nèi)容作為command的輸入
:r!command:將命令command的輸出結(jié)果放到當前行
寄存器操作
"?nyy:將當前行及其下n行的內(nèi)容保存到寄存器?中,其中?為一個字母,n為一個數(shù)字
"?nyw:將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數(shù)字
"?nyl:將當前行及其下n個字符保存到寄存器?中,其中?為一個字母,n為一個數(shù)字
"?p:取出寄存器?中的內(nèi)容并將其放到光標位置處。這里?能是個字母,也能是個數(shù)字
ndd:將當前行及其下共n行文本刪除,并將所刪內(nèi)容放到1號刪除寄存器中。
進入vi
vi test
離開vi
:q! 離開vi,并放棄剛在緩沖區(qū)內(nèi)編輯的內(nèi)容。
:wq 將緩沖區(qū)內(nèi)的資料寫入磁盤中,并離開vi。
:ZZ 同wq
同wq
:w 將緩沖區(qū)內(nèi)的資料寫入磁盤中,但并不離開vi。
:q 離開vi,若文件被修改過,則會被需求確認是否放棄修改的內(nèi)容,此指令可和: w 配合使用。
Vi 的操作模式
Vi 提供兩種操作模式:
輸入模式(insert mode)
指令模式(command mode)
當使用者進入vi后,既處于指令模式下,此刻鍵入所有字元皆被視為指令。
輸入模式:a(append) 游標之后加入資料。
A 該行之末加入資料
i (insert) 游標之前加入資料
I 該行之首加入資料
o (open) 新增一行和該行之下供輸入資料
O 新增一行和該行之上供輸入資料
指令模式:B 移至該行第一個字符,若光標在該行第一字符則光標移至上一行第一字符。
b 由游標所在位置之前一個字串的第一個字元
cc 刪除整行,修改整行的內(nèi)容。
D 以行為單位,刪除游標在內(nèi)后面的所有字符。
db 刪除該行光標前字符
dd 刪除該行
de 刪除自光標開始后面的字符
d加字符 刪除光標所在位置至字符之間的單
E移至該行最后字符,若光標在該行最后字符則光標移至下一行最后字符
e由游標所在位置至該字串的最后一個字元
G 移至該檔案的最后一行
h 向前移一個字元
j 向下移一個字元
k 向上移一個字元
0 移至該行之首
M 移至視窗的中間那行
L 移至視窗的最后一行
l 向后移一個字符
0 由游標所在位置該行的第一個字元
nG 移至該檔案的第n行
n+ 自游標所在位置向后移n行至該行的第一字符
n- 自游標所在位置向前移n行至該行的第一字符
R 進入取代狀態(tài),直到《ESC》為止
s 刪除游標所在字元,并進入取代模式直到《ESC》
S 刪除游標所在之該行資料,并進入輸入模式直到《ESC》
w 由游標所在位置之下一個字串的第一個字元
x 刪除游標所在該字元。
X 刪除游標所在之前一字元。
r 用接于此指令之后的字元取代(replace)游標所在字元
yy yank整行,使游標所在該行復制到記憶體緩沖區(qū)
顯示該行之行號、檔案名稱、檔案中最末之行號、游標所在行號占
總行號之百分比
$ 由游標所在位置至該行的最后一個字元。
) 由游標所在位置至下一個句子的第一個字元。
( 由游標所在位置至該句子的第一個字元。
{ 由游標所在位置至該段落的最后一個字元。
} 由游標所在位置至該段落的第一個字元
yank和delete可將指定的資料復制到記憶體緩沖區(qū),而藉有put指令可將緩沖區(qū)內(nèi)的資料復制到熒幕上
例如:搬移一行 :在該行執(zhí)行dd
游標移至目的地
執(zhí)行p
復制一行 :在該行執(zhí)行yy
游標移至目的地
執(zhí)行p
視窗移動:
視窗往下卷一頁
視窗往上卷一頁
視窗往下卷半頁
視窗往上卷半頁
視窗往下卷一行
視窗往上卷一行
刪除、復制及修改指令介紹:
d(delete)、c(change)和y(yank)這一類的指令在vi 中的指令格式為:
operation+scope=command
(運算子)(范圍)
運算子:
d 刪除指令。刪除資料,但會將刪除資料復制到記憶體緩沖區(qū)。
y 將資料(字組、行列、句子或段落)復制到緩沖區(qū)。
p 放置(put)指令,和d和y配合使用。可將最后delete或yank的資料放置于游標所在位置之行列下。
c 修改(change)指令,類似delete于insert的組合。刪除一個字組、句子等資料,并插入新鍵入的
可以用gedit 或 vim
命令如下:
$ gedit 文件名
或
$ vim 文件名
vim 需要下載安裝 $sudo apt-get install vim
也可以下載其他編譯器 如:eclipse等