Vi的3種運行模式
- 普通(normal)模式,又稱命令模式
- 插入(insert)模式
- 命令行(cmdline)模式
進入Vi后首先進入的是普通模式,Vi等待編輯命令輸入,也就是此時輸入的字母都將被作為命令來解釋。
在普通模式下,輸入插入命令i、附加命令a、打開命令o等進入插入模式,在插入模式下用戶輸入的任何字符都被Vi當作文件內(nèi)容保存起來,并顯示在屏幕。在文本輸入過程中,按Esc鍵返回普通模式。
在普通模式下,執(zhí)行Ex命令使用:,查找使用?和/,調(diào)用Shell命令使用!。末行命令執(zhí)行完后,Vi自動返回普通模式。
一、普通模式下的操作
進入插入模式
i 光標前插入
I 光標行首插入
a 光標后插入
A 光標行尾插入
o 光標所在行下插入一行,行首插入
O 光標所在行上插入一行,行首插入
光標定位
G 移至最后一行行首
nG 移至第n行行首
n+ 下移n行,行首
n- 上移n行,行首
n$ 下移n行(1表示本行),行尾
0 所在行行首
$ 所在行行尾
^ 所在行首字母
h,j,k,l 左移,下移,上移,右移
H 當前屏幕首行行首
M 屏幕顯示文件的中間行行首
L 當前屏幕最底行行首
替換和刪除
rc 用c替換光標所指向的字符
nrc 用c替換光標所指向的前n個字符
x 刪除光標處的字符
nx 刪除光標所在位置開始向右的n個字符
dw 若光標處在某個詞的中間,則從光標所在的位置開始刪至詞尾(連同詞后的若干空格,制表符)
ndw 刪除光標所在的單詞開始的n個單詞(第一個單詞從光標所處的字符開始刪)
db 光標所在單詞的前一個字符至單詞的首字符
ndb 刪除光標所在的單詞前n哥單詞
dd 刪除光標所在的整行
ndd 刪除當前行及其后n-1行
dG 刪除當前行到最后一行
d1G 刪除當前行到第一行
d$ 刪除當前字符到行尾
d0 刪除前一個字符到行首
d,左箭頭 刪除光標處的前一個字符
d,右箭頭 刪除光標處的字符
d,上箭頭 刪除當前行和上一行
d,下箭頭 刪除當前行和下一行
復(fù)制和粘貼
yy 當前行復(fù)制到緩沖區(qū)
nyy 當前開始的n行復(fù)制到緩沖區(qū)
yG 光標所在行至最后一行復(fù)制到緩沖區(qū)
y1G 光標所在行至第一行復(fù)制到緩沖區(qū)
y$ 光標所在位置到行尾復(fù)制到緩沖區(qū)
y0 光標所在位置的前一個字符到行首復(fù)制到緩沖區(qū)
p 將緩沖區(qū)的內(nèi)容寫到光標所在的位置
搜索字符串
/str 往右移動到有str的地方
?str 往左移動到有str的地方
n 向相同的方向移動
N 向相反的方向移動
撤銷和重復(fù)
U 取消前一次的誤操作或不合適的操作對文件造成的影響
. 再執(zhí)行一次前面剛完成的某個命令
退出Vi
ZZ 存盤退出
ZQ 不保存退出
二、命令行模式下的操作
跳行
:n 跳轉(zhuǎn)到第n行
字符串搜索和替換
:/str/ 從當前往右移動到有str的地方
:?str? 從當前往左移動到有str的地方
:/str/w file 將包含有str的行寫到文件file中
:/str1/,/str2/w file 將從str1開始到str2結(jié)束的內(nèi)容寫入到file文件中
:s/str1/str2/ 將找到的第一個str1替換為str2
:s/str2/str2/g 將當前行找到的所有str1替換為str2
:n1,n2s/str1/str2/g 將從n1行至n2行找到的所有的str1替換為str2
:1,.s/str1/str2/g 將從第1行至當前行的所有str1替換為str2
:.,$s/str1/str2/g 將從當前行至最后一行的所有str1替換為str2
:1,$s/str1/str2/gc 將從第1行至最后一行的所有str1替換為str2,并在替換前詢問
文本的復(fù)制、移動和刪除
:n1,n2 co n3 將n1行至n2行復(fù)制到n3后面
:n1,n2 m n3 將n1行至n2行移動到n3后面
:d 刪除當前行
:nd 刪除第n行
:n1,n2 d 刪除n1行至n2行
:.,$d 刪除當前行至最后一行
:/str1/,/str2/d 刪除從str1開始至str2為止的內(nèi)容
文件相關(guān)命令
:w 當前編輯的內(nèi)容存盤
:w file 當前編輯的內(nèi)容寫到file中
:n1,n2w file 從n1行至n2行寫到file中
:nw file 第n行寫到文件file中
:1,.w file 從第1行至當前行寫到file中
:.,$w file 從當前行至最后一行寫到file中
:r file 打開另一個文件file
:e file 新建file文件
:f file 當前文件改名為file
執(zhí)行Shell命令
:!Cmd 運行Shell命令Cmd
:n1,n2 w !Cmd 將n1行至n2行做為Cmd命令的輸入,若不指定行則整個文件做為Cmd的輸入
:r !Cmd 將命令運行的結(jié)果寫入光標所在行的下一行(命令不能是別名)
設(shè)置Vi環(huán)境
:set autoindent 自動縮進
:set noautoindent 取消自動縮進
:set number 在編輯文件時顯示行號
:set nonumber 不顯示行號
:set ruler 在屏幕底部顯示光標所在的行,列位置
:set noruler 不顯示行,列位置
:set tabstop=value 設(shè)置顯示制表符的空格字符個數(shù)
:set wrapmargin=value 設(shè)置顯示器的右頁邊。當輸入進入所設(shè)置的頁邊時,編輯器自動回車換行
:set 顯示設(shè)置的所有選項
:set all 顯示所欲可以設(shè)置的選項
退出Vi
:q 退出
:qw 保存并退出
:q! 不保存退出
歡迎轉(zhuǎn)載,但請保留此信息
[我的Linux,讓Linux更易用]
CentOS精簡版,集成lamp,lnmp版,
wdcp,
wdcdn,
wddns,
一鍵安裝包,集群負載均衡LVS,智能DNS/CDN,性能優(yōu)化
本文連接:
http://cd-genova.com/old/linux_vim