最近在配置LAMP服務器,需要用到vi,所以重新學習整理了一下

vi [文件名] 若存在該文件,則打開存在文件;若不存在,將新建文件名爲[文件名]的文件;

/*命令行模式--直接鍵入,不是命令行*/

k、j 上下
h、l 左右
^、0 移動到行首
$ 移動到行尾
nG 跳轉到第n行
G 跳轉到首行
Ctrl+G 顯示光標所在位置的行數和列數
w、b 使光標向前或向後跳過一個單詞
) 光標移至句尾
( 光標移至句首
} 光標移至段落最後一個字母
{ 光標移至段落第一個字母
n+ 光標下移n行
n- 光標上移n行
n$ 光標移至第n行尾
H 光標移至屏幕頂行
M 光標移至屏幕中間行
L 光標移至屏幕最後行

i 在光標的前插入字符(i=insert)--進入編輯模式
a 在光標的後插入字符(a=append)--進入編輯模式
o 在當前行之下新開一行--進入編輯模式
r 將光標處的字符替換成另一個字符(r=replace)
cw 改變光標所在處的`單詞`(c=change)
dw 刪除光標所在處的`單詞`(d=delete)
x 刪除光標所在處的一個字符
d$ 刪除光標所在處到行尾的所有字符
d0 刪除光標所在處到行首的所有字符
d 刪除整行

Ctrl+F 向前翻一頁
Ctrl+B 向後翻一頁
Ctrl+U 向前翻半頁
Ctrl+D 向後翻半頁

[n,m]y 複製第n行到第m行
[n]yy 複製第n行,若無行數,只複製當前行
[n]yw 複製第n個單詞,若無行數,只複製光標到單詞尾
y$ 複製光標到行尾
y^ 複製光標到行首

文件在編輯中會產生一個臨時文件,文件以.開頭並以.swp結尾。在異常退出的時候,系統在下一次編輯的時候會提示命令處理。
O 只讀打開
E 繼續編輯,不恢復.swp文件
R 恢復文件,繼續編輯
Q 退出vi
D 刪除.swp文件
A 中止
vi -i [文件名] 恢復.swp文件

ndd 刪除當前行及其後n-1行

p 在光標所在位置粘貼


/*命令行模式--直接輸入,不是命令行*/


/*命令行模式--命令行輸入*/

:q! 強制退出
:w 保存
:[m,n]w[文件名] [將編輯的文件的m至n行]另存爲
:wq 保存並退出
:wq! 保存並強制退出

:set nu 顯示行號
:set nonu 取消行號
:nu 顯示當前行號

:/string 從光標所在處向前查找相應的字符串的命令
:?string 從光標所在處向後查找相應的字符串的命令(藉助"?"

一般出現在最後理解)
n 在同一方向重複上一次搜索命令
N 在反方向上重複上一次搜索命令

:u 取消最近一次操作
:U 取消所有操作
Ctrl+R 恢復對u命令的操作

(s-substitute代替;g-global)
:s/old/new 用new替換首次出現的old
:s/old/new/g 用new替換行中出現的所有old
:[n,m]s/old/new/g 用new替換第n行到第m行中出現的old
:%s/old/new/g 用new替換所有的old
:s/old/new/c 用new替換首次出現的old,用戶需要確認。

:r [文件名] 在打開的文件file中光標所在處讀入[文件名]
:nr [文件名] 在打開的文件file中光標所在處讀入[文件名]從第n行開始的內容

:n1,n2 co n3 將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3 將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d 將n1行到n2行之間的內容刪除

/*命令行模式--命令行輸入*/


/*編輯模式*/

Esc 退出編輯模式
PageUp 向前翻頁
PageDown 向後翻頁

Delete 刪除光標位置的字符


/*編輯模式*/


有整理得不對的地方希望大家指正。

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