vi用法整理

vi命令模式中可用的移動鍵:
h---將光標向左移一個字符
j---將光標向下移一個字符
k---將光標向上移一個字符
l---將光標向右移一個字符
w---將光標向前移一個單詞
b---將光標向後移一個單詞
e---將光標移到下一個單詞之後
0---將光標移到行首
$---將光標移到行末
)---將光標移到下一句句首
(---將光標移到上一句句首
}---將光標移到下一段開始處
{---將光標移到下一段開始處
G---將光標移到當前文檔的底部
^---將光標移到行內非空格的第一個字符
H---將光標移到屏幕上第一行
L---將光標移到屏幕上最後一行

:1回車-將光標移到當前文檔的頂部
:n回車-將光標移到當前文檔第n行
u或U----撤消上一次操作
cw---刪除當前光標開始的單詞並進行編輯模式
.---重複上一次操作,可以和cw結合使用提高效率
:!sh--不退出文檔,轉到shell界面
:r filename--讀入外部文件到當前文件中

在vi中滾動屏幕:
z然後按回車----將光標所在的那一行移至屏幕頂部
z然後按"-"----將光標所在的那一行移至屏幕底部
z然後按"."----將光標所在的那一行移至屏幕中部
Ctrl+u------向上滾動半屏
Ctrl+d------向下滾動半屏
Ctrl+f------向前滾動全屏
Ctrl+b------向後滾動全屏
Ctrl+e------向下滾動一行
Ctrl+y------向上滾動一行


vi的文本編輯命令:
D------從光標定位的行末刪除文本
dd------行刪除光標定位的當前行
ndd-----n代表即將刪除的行數。例如5dd命令不僅會把當前行刪除,還會把緊隨其後的4行也刪除
rc------c代表字符。光標下方的字符將被替換爲r後面的字符
R------R後鍵入的文本將改寫當前文本,從光標所在位置開始,一直到按下Escape返回命令模式爲止
S------刪除當前行,並開始在當前的空白行插入文本
x------刪除光標下方的字符,並將字符右移填空
X------刪除光標前的字符,並移動字符,令光標下方的字符來填空
~------更改光標下方的字母的大小寫
J------將當前行和前一行連接起來,並刪除因此而來的空行
*------查找當前光標所在位置的單詞

vi中的查找和替換命令
/pattern--------pattern(樣式)指代的是要查找的內容。vi將在文件中向前查找與指定內容匹配的第一樣式
/-----------重複上一次查找,在文件中查找下一個匹配樣式
?pattern--------pattern(樣式)指代的是要查找的內容。vi將在文件中向後查找與指定內容匹配的第一樣式
?-----------重複上一次查找,在文件中查找與上一次查找內容匹配的樣式
%-----------把當前光標移至匹配的圓括號或方括號。對程序員來說,該命令非常有用
:s/pattern1/pattern2--用pattern2替換當前行中與pattern1匹配的每個內容
:%s/pattern1/pattern2--用pattern2替換整個文件中與pattern1匹配的每個內容


vi中的yank命令
yw-------把光標當前所在的單詞移到緩衝區
y$-------把當前行及其以前的所有文本移到緩衝區
yy-------把當前行整行移到緩衝區
nyy-------n代表打算移到緩衝區的文本的行數。例如5yy將把當前行和緊隨其後的4行移到緩衝區

文字複製和粘貼
(例)
複製光標以下3行:3yy,3Y
複製光標以後6個單詞:6yw
粘貼到光標以下:p
粘貼到光標以上:P
通用替換命令
:行1,行2s/字符串1/字符串2/g
“行1,行2”指定方法例:
第5行到第30行:5,30
當前行到第30行:.,30
第5行到第末尾行:5,$
第5行到含有end的行:5,/end/
所有行:%

刪除命令操作
dl 刪除當前字符(與x命令功能相同)
d0 刪除到某一行的開始位置
d^ 刪除到某一行的第一個字符位置(不包括空格或TA B字符)
dw 刪除到某個單詞的結尾位置
d3w 刪除到第三個單詞的結尾位置
db 刪除到某個單詞的開始位置
dW 刪除到某個以空格作爲分隔符的單詞的結尾位置
dB 刪除到某個以空格作爲分隔符的單詞的開始位置

刪除命令操作
d7B 刪除到前面7個以空格作爲分隔符的單詞的開始位置
d) 刪除到某個語句的結尾位置
d4) 刪除到第四個語句的結尾位置
d( 刪除到某個語句的開始位置
d} 刪除到某個段落的結尾位置
d{ 刪除到某個段落的開始位置
d7{ 刪除到當前段落起始位置之前的第7個段落位置
dd 刪除當前行
d/text 刪除從文本中出現“ t e x t”中所指定字樣的位置,一直向前直到下一個該字樣所出現的
位置(但不包括該字樣)之間的內容
dfc 刪除從文本中出現字符“c”的位置,一直向前直到下一個該字符所出現的位置(包括
該字符)之間的內容
dtc 刪除當前行直到下一個字符“ c”所出現位置之間的內容
D 刪除到某一行的結尾
d$ 刪除到某一行的結尾
5dd 刪除從當前行所開始的5行內容
dL 刪除直到屏幕上最後一行的內容
dH 刪除直到屏幕上第一行的內容
dG 刪除直到工作緩存區結尾的內容
d1G 刪除直到工作緩存區開始的內容

修改命令操作
cl 更改當前字符
cw 修改到某個單詞的結尾位置
c3w 修改到第三個單詞的結尾位置
cb 修改到某個單詞的開始位置
cW 修改到某個以空格作爲分隔符的單詞的結尾位置
cB 修改到某個以空格作爲分隔符的單詞的開始位置
c7B 修改到前面7個以空格作爲分隔符的單詞的開始位置
c0 修改到某行的結尾位置
c) 修改到某個語句的結尾位置
c4) 修改到第四個語句的結尾位置
c( 修改到某個語句的開始位置
c} 修改到某個段落的結尾位置
c{ 修改到某個段落的開始位置
c7{ 修改到當前段落起始位置之前的第7個段落位置
ctc 修改當前行直到下一個字符c所出現位置之間的內容
C 修改到某一行的結尾
cc 修改當前行
5cc 修改從當前行所開始的5行內容

替換命令操作
s 將當前字符替換爲一個或多個字符
S 將當前行替換爲一個或多個字符
5s 將從當前字符開始的5個字符替換爲一個或多個字符
vi替換使用規則:
:g/s1/s/s2/s3/g
第一個g表示對每一個包括s1的行都進行替換,第二個g表示對每一行包括s1的行所有的s2都用s3替換
s表示替換,s2是要被替換的字符串,他可以和s1相同(如果相同的話用//代替),s3是替換字符串


顯示行號
:set number 或者 :set nu
隱藏行號
:set nonumber 或者 :set nonu
自動縮進
:set autoindent 或者 :set ai
不自動縮進
:set noautoindent 或者 :set noai
顯示Tab及行尾字符
:set list
隱藏Tab及行尾字符
:set nolist
設置Tab寬度爲4個字符
:set tabstop=4
查看當前設置
:set all 

 

來源:內部

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