Vi的3種運行模式 編輯器
- 普通(normal)模式,又稱命令模式
- 插入(insert)模式
- 命令行(cmdline)模式
進入Vi後首先進入的是普通模式,Vi等待編輯命令輸入,也就是此時輸入的字母都將被做爲命令來解釋。
在普通模式下,輸入插入命令i、附加命令a、打開命令o等進入插入模式,在插入模式下用戶輸入的任何字符都被Vi看成文件內容保存起來,並顯示在屏幕。在文本輸入過程當中,按Esc鍵返回普通模式。
在普通模式下,執行Ex命令使用:,查找使用?和/,調用Shell命令使用!。末行命令執行完後,Vi自動返回普通模式。
1、普通模式下的操做 ide
進入插入模式命令行
i 光標前插入 I 光標行首插入
a 光標後插入 A 光標行尾插入
o 光標所在行下插入一行,行首插入
O 光標所在行上插入一行,行首插入orm
光標定位字符串
- G 移至最後一行行首
- nG 移至第n行行首
- n+ 下移n行,行首
- n- 上移n行,行首
- n$ 下移n行(1表示本行),行尾
- 0 所在行行首
- $ 所在行行尾
- ^ 所在行首字母
- h,j,k,l 左移,下移,上移,右移
- H 當前屏幕首行行首
- M 屏幕顯示文件的中間行行首
- L 當前屏幕最底行行首
替換和刪除cmd
- 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,下箭頭 刪除當前行和下一行
複製和粘貼it
- yy 當前行復制到緩衝區
- nyy 當前開始的n行復制到緩衝區
- yG 光標所在行至最後一行復制到緩衝區
- y1G 光標所在行至第一行復制到緩衝區
- y$ 光標所在位置到行尾複製到緩衝區
- y0 光標所在位置的前一個字符到行首複製到緩衝區
- p 將緩衝區的內容寫到光標所在的位置
搜索字符串class
- /str 往右移動到有str的地方
- ?str 往左移動到有str的地方
- n 向相同的方向移動
- N 向相反的方向移動
撤銷和重複file
- U 取消前一次的誤操做或不合適的操做對文件形成的影響
- . 再執行一次前面剛完成的某個命令
退出Vi搜索
- ZZ 存盤退出
- ZQ 不保存退出
2、命令行模式下的操做
跳行
- :n 跳轉到第n行
字符串搜索和替換
- :/str/ 從當前往右移動到有str的地方
- :?str? 從當前往左移動到有str的地方
- :/str/w file 將包含有str的行寫到文件file中
- :/str1/,/str2/w file 將從str1開始到str2結束的內容寫入到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
- :%s/str1/str2/g 全部的都替換
- :1,$s/str1/str2/gc 將從第1行至最後一行的全部str1替換爲str2,並在替換前詢問
- :12,23s/^/#/ 12~23行前加#
- :%s= *$== 全部行末多餘空格刪除
- :g/^\s*$/d 將全部不包含字符(空格也不包含)的空行刪除
文本的複製、移動和刪除
- :n1,n2 co n3 將n1行至n2行復制到n3後面
- :n1,n2 m n3 將n1行至n2行移動到n3後面
- :d 刪除當前行
- :nd 刪除第n行
- :n1,n2 d 刪除n1行至n2行
- :.,$d 刪除當前行至最後一行
- :/str1/,/str2/d 刪除從str1開始至str2爲止的內容
文件相關命令
- :w 當前編輯的內容存盤
- :w file 當前編輯的內容寫到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
執行Shell命令
- :!Cmd 運行Shell命令Cmd
- :n1,n2 w !Cmd 將n1行至n2行作爲Cmd命令的輸入,若不指定行則整個文件作爲Cmd的輸入
- :r !Cmd 將命令運行的結果寫入光標所在行的下一行(命令不能是別名)
設置Vi環境
- :set autoindent 自動縮進
- :set noautoindent 取消自動縮進
- :set number 在編輯文件時顯示行號
- :set nonumber 不顯示行號
- :set ruler 在屏幕底部顯示光標所在的行,列位置
- :set noruler 不顯示行,列位置
- :set tabstop=value 設置顯示製表符的空格字符個數
- :set wrapmargin=value 設置顯示器的右頁邊。當輸入進入所設置的頁邊時,編輯器自動回車換行
- :set 顯示設置的全部選項
- :set all 顯示所欲能夠設置的選項
退出Vi
- :q 退出
- :qw 保存並退出
- :q! 不保存退出