Vi編輯器的基本使用 1、vi編輯器的啟動與退出 # vi 新建一個空白的文檔,。 2,、退出vi編輯環(huán)境 # q! 強制退出編輯器(不保存當(dāng)前的修改),。 3,、進(jìn)入編輯環(huán)境并打開文件 # vi file 指定打開某文檔,。 文件操作 1、打開新文件 : e filename 打開文件(請確認(rèn)當(dāng)前正編輯文件已經(jīng)保存,,不然無法執(zhí)行),。 : e! filename 強制關(guān)閉當(dāng)前文件(不保存)并打開指定文件。 2,、讀取文件內(nèi)容到當(dāng)前文件 :r filename 讀取參數(shù)中的文件,,并將文件粘貼到光標(biāo)所在行的下面(類似插入)。 3,、保存文件 : w 常規(guī)保存文件,。若當(dāng)前文件沒有文件名執(zhí)行命令時會提示輸入文件名。 : w filename 另存為文件,,使用指定另存為的文件名作為參數(shù),。 : w! 對于沒有寫入權(quán)限的文件強行寫入。只限于root帳戶,! 4,、退出vi編輯器 : q 適用于已經(jīng)保存或沒有修改過的文件。 : wq 保存并退出,。 : q! 強行退出,,不保存當(dāng)前的修改。 光標(biāo)控制命令 1,、光標(biāo)方向移動 h 左 ,、l右、k上,、j下 2,、翻頁移動 ctrl+f:向前翻整頁、ctrl+b向后翻整頁,、ctrl+u向前翻半頁,、ctrl+d向后翻半頁 3、行內(nèi)快速跳轉(zhuǎn) shift+^ 將光標(biāo)快速跳轉(zhuǎn)到本行的行首,。 shift+$ 將光標(biāo)快速跳轉(zhuǎn)到本行的行尾,。 shift+W 將光標(biāo)快速跳轉(zhuǎn)到當(dāng)前位置的后一個單詞的首字母。 shift+b 將光標(biāo)快速跳轉(zhuǎn)到當(dāng)前位置的前一個單詞的首字母,。 shift+e 將光標(biāo)快速跳轉(zhuǎn)到當(dāng)前位置的后一個單詞的尾字母,。 4、文件內(nèi)行間快速跳轉(zhuǎn) : set nu 顯示行號,。 : set nonu 取消顯示行號,。 其他光標(biāo)操作
h或^h 向左移一個字符 j或^j或^n 向下移一行 k或^p 向上移一行 l或空格 向右移一個字符 G 移到文件的最后一行 nG 移到文件的第n行 w 移到下一個字的開頭 W 移到下一個字的開頭,忽略標(biāo)點符號 b 移到前一個字的開頭 B 移到前一個字的開頭,,忽略標(biāo)點符號 L 移到屏幕的最后一行 M 移到屏幕的中間一行 H 移到屏幕的第一行 e 移到下一個字的結(jié)尾 E 移到下一個字的結(jié)尾,,忽略標(biāo)點符號 ( 移到句子的開頭 ) 移到句子的結(jié)尾 { 移到段落的開頭 } 移到下一個段落的開頭 0或| 移到當(dāng)前行的第一列 n| 移到當(dāng)前行的第n列 ^ 移到當(dāng)前行的第一個非空字符 $ 移到當(dāng)前行的最后一個字符 +或return 移到下一行的第一個字符 - 移到前一行的第一個非空字符 在vi中添加文本 命令 插入動作 a 在光標(biāo)后插入文本 A 在當(dāng)前行插入文本 i 在光標(biāo)前插入文本 I 在當(dāng)前行前插入文本 o 在當(dāng)前行的下邊插入新行 O 在當(dāng)前行的上邊插入新行 :r file 讀入文件file內(nèi)容,并插在當(dāng)前行后 :nr file 讀入文件file內(nèi)容,,并插在第n行后 escape 回到命令模式 ^v char 插入時忽略char的指定意義,,這是為了插入特殊字符 在vi中刪除文本 命令 刪除操作 x 刪除光標(biāo)處的字符,可以在x前加上需要刪除的字符數(shù)目 nx 從當(dāng)前光標(biāo)處往后刪除n個字符 X 刪除光標(biāo)前的字符,,可以在X前加上需要刪除的字符數(shù)目 nX 從當(dāng)前光標(biāo)處往前刪除n個字符 dw 刪至下一個字的開頭 ndw 從當(dāng)前光標(biāo)處往后刪除n個字 dG 刪除行,,直到文件結(jié)束 dd 刪除整行 ndd 從當(dāng)前行開始往后刪除 db 刪除光標(biāo)前面的字 ndb 從當(dāng)前行開始往前刪除n字 :n,md 從第m行開始往前刪除n行 d或d$ 從光標(biāo)處刪除到行尾 dcursor_command 刪除至光標(biāo)命令處,,如dG將從當(dāng)產(chǎn)膽行刪除至文件的末尾 ^h或backspace 插入時,刪除前面的字符 ^w 插入時,,刪除前面的字 修改vi文本 每個命令前面的數(shù)字表示該命令重復(fù)的次數(shù) 命令 替換操作 rchar 用char替換當(dāng)前字符 R text escape 用text替換當(dāng)前字符直到換下Esc鍵 stext escape 用text代替當(dāng)前字符 S或cctext escape 用text代替整行 cwtext escape 將當(dāng)前字改為text Ctext escape 將當(dāng)前行余下的改為text cG escape 修改至文件的末尾 ccursor_cmd text escape 從當(dāng)前位置處到光標(biāo)命令位置處都改為text 在vi中查找與替換 命令 查找與替換操作 /text 在文件中向前查找text ?text 在文件中向后查找text n 在同一方向重復(fù)查找 N 在相反方向重復(fù)查找 ftext 在當(dāng)前行向前查找text Ftext 在當(dāng)前行向后查找text ttext 在當(dāng)前行向前查找text,,并將光標(biāo)定位在text的第一個字符 Ttext 在當(dāng)前行向后查找text,并將光標(biāo)定位在text的第一個字符 :set ic 查找時忽略大小寫 :set noic 查找時對大小寫敏感 :s/oldtext/newtext 用newtext替換oldtext :m,ns/oldtext/newtext 在m行通過n,,用newtext替換oldtext & 重復(fù)最后的:s命令 :g/text1/s/text2/text3 查找包含text1的行,,用text3替換text2 :g/text/command 在所有包含text的行運行command所表示的命令 :v/text/command 在所有不包含text的行運行command所表示的命令 在vi中復(fù)制文本 命令 復(fù)制操作 yw復(fù)制當(dāng)前光標(biāo)所在位置到單詞尾字符的內(nèi)容到vi緩存區(qū),相當(dāng)于復(fù)制一個單詞 y$復(fù)制光標(biāo)所在位置到行尾內(nèi)容到緩存區(qū) y^復(fù)制光標(biāo)所在位置到行首內(nèi)容到緩存區(qū) #yy例如:5yy就是復(fù)制5行 #yw例如:2yw就是復(fù)制兩個單詞 如果要復(fù)制第m行到第n行之間的內(nèi)容,,可以在末行模式中輸入m,,ny例如:3,5y復(fù)制第三行到第五行內(nèi)容到緩存區(qū),。 粘貼
p 將臨時緩沖區(qū)中的文本放入光標(biāo)后 P 將臨時緩沖區(qū)中的文本放入光標(biāo)前 "(a-z)nyy 復(fù)制n行放入名字為圓括號內(nèi)的可命名緩沖區(qū),,省略n表示當(dāng)前行 "(a-z)ndd 刪除n行放入名字為圓括號內(nèi)的可命名緩沖區(qū),,省略n表示當(dāng)前行 "(a-z)p 將名字為圓括號的可命名緩沖區(qū)的內(nèi)容放入當(dāng)前行后 "(a-z)P 將名字為圓括號的可命名緩沖區(qū)的內(nèi)容放入當(dāng)前行前 在vi中撤消與重復(fù) 命令 撤消操作 u 撤消最后一次修改 U 撤消當(dāng)前行的所有修改 . 重復(fù)最后一次修改 , 以相反的方向重復(fù)前面的f,、F、t或T查找命令 ; 重復(fù)前面的f,、F、t或T查找命令 "np 取回最后第n次的刪除(緩沖區(qū)中存有一定次數(shù)的刪除內(nèi)容,一般為9) n 重復(fù)前面的/或?查找命令 N 以相反方向重復(fù)前面的/或?命令 保存文本和退出vi 命令 保存和/或退出操作 :w 保存文件但不退出vi :w file 將修改保存在file中但不退出vi :wq或ZZ或:x 保存文件并退出vi :q! 不保存文件,,退出vi :e! 放棄所有修改,從上次保存文件開始再編輯 vi中的選項 選項 作用 :set all 打印所有選項 :set nooption 關(guān)閉option選項 :set nu 每行前打印行號 :set showmode 顯示是輸入模式還是替換模式 :set noic 查找時忽略大小寫 :set list 顯示制表符(^I)和行尾符號 :set ts=8 為文本輸入設(shè)置tab stops :set window=n 設(shè)置文本窗口顯示n行 vi的狀態(tài) 選項 作用 :.= 打印當(dāng)前行的行號 := 打印文件中的行數(shù) ^g 顯示文件名、當(dāng)前的行號,、文件的總行數(shù)和文件位置的百分比 :l 使用字母"l"來顯示許多的特殊字符,,如制表符和換行符 在文本中定位段落和放置標(biāo)記 選項 作用 { 在第一列插入{來定義一個段落 [[ 回到段落的開頭處 ]] 向前移到下一個段落的開頭處 m(a-z) 用一個字母來標(biāo)記當(dāng)前位置,,如用mz表示標(biāo)記z '(a-z) 將光標(biāo)移動到指定的標(biāo)記,,如用'z表示移動到z 在vi中連接行 選項 作用 J 將下一行連接到當(dāng)前行的末尾 nJ 連接后面n行 光標(biāo)放置與屏幕調(diào)整 選項 作用 H 將光標(biāo)移動到屏幕的頂行 nH 將光標(biāo)移動到屏幕頂行下的第n行 M 將光標(biāo)移動到屏幕的中間 L 將光標(biāo)移動到屏幕的底行 nL 將光標(biāo)移動到屏幕底行上的第n行 ^e(ctrl+e) 將屏幕上滾一行 ^y 將屏幕下滾一行 ^u 將屏幕上滾半頁 ^d 將屏幕下滾半頁 ^b 將屏幕上滾一頁 ^f 將屏幕下滾一頁 ^l 重繪屏幕 z-return 將當(dāng)前行置為屏幕的頂行 nz-return 將當(dāng)前行下的第n行置為屏幕的頂行 z. 將當(dāng)前行置為屏幕的中央 nz. 將當(dāng)前行上的第n行置為屏幕的中央 z- 將當(dāng)前行置為屏幕的底行 nz- 將當(dāng)前行上的第n行置為屏幕的底行 vi中的shell轉(zhuǎn)義命令 選項 作用 :!command 執(zhí)行shell的command命令,,如:!ls :!! 執(zhí)行前一個shell命令 :r!command 讀取command命令的輸入并插入,如:r!ls會先執(zhí)行l(wèi)s,,然后讀入內(nèi)容 :w!command 將當(dāng)前已編輯文件作為command命令的標(biāo)準(zhǔn)輸入并執(zhí)行command命令,,如:w!grep all :cd directory 將當(dāng)前工作目錄更改為directory所表示的目錄 :sh 將啟動一個子shell,使用^d(ctrl+d)返回vi :so file 在shell程序file中讀入和執(zhí)行命令 vi中的宏與縮寫 (避免使用控制鍵和符號,不要使用字符K,、V,、g,、q、v,、*、=和功能鍵) 選項 作用 :map key command_seq 定義一個鍵來運行command_seq,如:map e ea,,無論什么時候都可以e移到一個字的末尾來追加文本 :map 在狀態(tài)行顯示所有已定義的宏 :umap key 刪除該鍵的宏 :ab string1 string2 定義一個縮寫,,使得當(dāng)插入string1時,用string2替換string1,。當(dāng)要插入文本時,鍵入string1然后按Esc鍵,,系統(tǒng)就插入了string2 :ab 顯示所有縮寫 :una string 取消string的縮寫 在vi中縮進(jìn)文本 選項 作用 ^i(ctrl+i)或tab 插入文本時,插入移動的寬度,,移動寬度是事先定義好的 :set ai 打開自動縮進(jìn) :set sw=n 將移動寬度設(shè)置為n個字符 n<< 使n行都向左移動一個寬度 n>> 使n行都向右移動一個寬度,,例如3>>就將接下來的三行每行都向右移動一個移動寬度 1.編輯模式: 插入/替換 (按INSERT鍵切換) 2.[ESC] 指令模式 3.輸入模式 將在指令模式下輸入 a 新增(a,A) a:從光標(biāo)所在位置后面開始新增資料,光標(biāo)后的資料隨新增資料向后移動,。 A:從光標(biāo)所在列最后面的地方開始新增資料,。 插入(i,I) i:從光標(biāo)所在位置前面開始插入資料,光標(biāo)后的資料隨新增資料向后移動,。 I:從光標(biāo)所在列的第一個非空白字元前面開始插入資料,。 開始(o,O) o:在光標(biāo)所在列下新增一列并進(jìn)入輸入模式。 O:在光標(biāo)所在列上方新增一列并進(jìn)入輸入模式,。 4.存盤/退出 [ESC] :wq //存盤退出 :w! //存盤繼續(xù) :q //退出 (源文件未被編輯過可用) :q! //強制退出 5.刪除與改修 [ESC] x //刪除光標(biāo)所在字符 dd //刪除光標(biāo)所在列,。 r //修改光標(biāo)所在字元,r后接著要修正的字符,。 R //進(jìn)入取替換狀態(tài),。 s //刪除光標(biāo)所在字元,并進(jìn)入輸入模式,。 S //刪除光標(biāo)所在的列,,并進(jìn)入輸入模式。 6.恢復(fù) [ESC] u //可以恢復(fù)被刪除的文字,。 U //可以恢復(fù)光標(biāo)所在列的所有改變,。 |
|