Vi的3種運行模式
普通(normal)模式,又稱命令模式
插入(insert)模式
命令列(cmdline)模式
進入Vi後首先進入的是普通模式,ViVidline)ViVi編輯指令輸入,也就是此時輸入的字母都會被當作命令來解釋。
在普通模式下,輸入插入命令i、附加命令a、打開命令o等進入插入模式,在插入模式下用戶輸入的任何字符都被Vi當作文件內容保存起來,並顯示在屏幕。在文字輸入過程中,按Esc鍵返回普通模式。
在普通模式下,執行Ex指令使用:,找出使用?和/,呼叫Shell指令使用!。末行指令執行完後,Vi自動回到普通模式。
一、普通模式下的操作
進入插入模式
i 遊標前插入 I 光標行首插入後 遊標所在行下插入一行,行首插入
O 遊標所在行上插入一行,行首插入
遊標定位
G 移至最後一行行首
nG 移至前一行行首
nG 移至第一行行首
nG 『 上移n行,行首
n$ 下移n行(1表示本行),行尾
0 所在行行首
$ 所在行行首
『h,j,k, l 左移,下移,上移,右移
H 當前屏幕首行行首
M 螢幕首行行首
M 屏幕顯示文件的中間行頭
rc 用c替換遊標所指向的字元nrc 用c替換遊標所指向的前n個字元
x 光標處刪除光標處的字元
x 光標處的字元。
dw 若光標處在某個字的中間,則從遊標所在的位置開始刪至詞尾(連同詞後的若干空格,製表符)ndw 刪除遊標所在的單字開始的n個單字(第一個單字從遊標所處的字元開始刪除)db 遊標所在單字的前一個字元至單字的首字ndb 刪除遊標所在的單字前標🀜的單字。 刪除目前行及其後n-1行dG 刪除目前行到最後一行d1G 刪除目前行到第一行d$ d,左箭頭刪除遊標處的前一個字元d,右箭頭刪除遊標處的字元d,上箭頭刪除目前行和上一行d,下箭頭刪除目前行和下一行複製和貼上
yy 當前行複製到緩衝區
nyy 目前開始的n行複製到緩衝區
yG 光標所在緩衝區
yG 光標所在緩衝區
yG 〜 遊標所在行至最後一行。區
y $ 遊標所在位置到行尾複製到緩衝區
:n 跳轉到第n行
字串搜尋與替換
:s/str1/str2/ 將找到的第一個str1替換為str2
:s/str2/str2/g 㟀『2/strnstrnstrnstrnstrnstrnstrnstrnid str2/g 將從n1行至n2行找到的所有的str1替換為str2
:1,.s/str1/str2/g 將從第1行替換為當前行的所有str1,str. $s/str1/str2/g 將從所有行至最後一行的str1替換為str2
:%s/str1/str2/g 〠 將從第1行至最後一行的所有str1替換為str2,並在替換前詢問
:12,23s/^/#/ 12~23行前加#
:%s= *$== 所有行末多餘空格刪除
:g/^s*$/d 將所有不包含字元(空格的複製、移除)刪除
:n1,n2 co n3 將n1行至n2行複製到n3後面
:n1,n2 m n3 『 將n 刪除目前行
:nd 刪除第n行
:n1,n2 d 刪除n1行至n2行
:.,$d 〜/str/str止的內容
檔案相關指令:w 目前編輯的內容存盤:w file 當前編輯的內容存到file13535,313號:nw file 第n行寫到檔案file中
:1,.w file 從第1行至當前行寫到file中
:.,$w file 從目前行至最後一行寫到file中🀀 〜 一個檔案file
:e file 新建file檔案
:f file 目前檔案改名為file『 運行Shell指令Cmd
:n1,n2 w !Cmd 將n1行至n2行做為Cmd指令的輸入,若不指定行則整個檔案做為Cmd的輸入
:r !Cmd 將指令運行的結果寫入遊標所在行的下一行(Vi環境
:set autoindent 自動縮進
:set noautoindent 〕行
🀕 set nonumber 不顯示行號:set ruler 在螢幕底部顯示光標所在的行,列位置:set noruler 不顯示行,列位置
:set tabstop=value 〜邊的空格設定顯示製表符的空格顯示個數位顯示器的空格。輸入進入所設定的頁邊時,編輯器自動回車換行
:set 顯示設定的所有選項🀜
退出Vi:q 退出
:qw 保存退出
:q! 不保存退出