vi編輯器
- vim是Vi improved的縮寫,是vi的改進版
- linux中,vi被認爲是事實上的標準編輯器
進入vi編輯器
vi filename |
若是filename存在,則打開;揉着建立一個新的文件叫作filename |
vi -R filename |
以只讀模式打開現有文件 |
view filename |
以只讀模式打開現有文件 |
- 豎線(|)表明光標的位置。
- 波浪號(~)表明該行沒有任何內容。若是沒有 ~,也看不到任何內容,那說明這一行確定是有空白字符(空格、tab 縮進、換行符等)或不可見字符。
工做模式
- 普通模式
- 由Shell進入vi編輯器時,首先進入普通模式。在普通模式下,從鍵盤輸入任何字符都被看成命令來解釋。普通模式下沒有任何提示符,輸入命令後當即執行,不須要回車,並且輸入的字符不會在屏幕上顯示出來。
- 普通模式下能夠執行命令、保存文件、移動光標、粘貼複製等。
- 編輯模式
- 編輯模式主要用於文本的編輯。該模式下用戶輸入的任何字符都被做爲文件的內容保存起來,並在屏幕上顯示出來。
- 命令模式
- 命令模式下,用戶能夠對文件進行一些高級處理。儘管普通模式下的命令能夠完成不少功能,但要執行一些如字符串查找、替換、顯示行號等操做仍是必需要進入命令模式。
退出vi編輯
- 退出以前,能夠在w命令後面指定一個文件名,則能夠將文件另存爲新文件:
w filename2
移動光標
- 爲了避免影響文件內容,必須在普通模式(按兩次 Esc 鍵)下移動光標。使用下表中的命令每次能夠移動一個字符:
k |
向上移動 |
j |
向下移動 |
h |
向左移動 |
l |
向右移動 |
- 兩點提醒:
- vi 是區分大小寫的,輸入命令時注意不要鎖定大寫。
- 能夠在命令前邊添加一個數字做爲前綴,例如,2j 將光標向下移動兩行。
- 其餘移動命令:
0 |
將光標定位在一行的開頭 |
$ |
將光標定位在一行的末尾 |
w |
定位到下一個單詞 |
b |
定位到上一個單詞 |
( |
定位到一句話的開頭(句子是以 ! . ? 三種符號來界定的) |
) |
定位到一句話的結尾 |
{ |
定位到段落開頭 |
} |
定位到段落結尾 |
[[ |
回到段落的開頭處 |
]] |
向前移動到下一個段落的開頭處 |
1G |
移動到文件第一行 |
G |
移動到文件最後一行 |
nG或:n |
移動到文件第n行 |
H |
移動到屏幕頂部 |
nH |
移動到屏幕頂部第n行 |
M |
移動到屏幕中間 |
L |
移動到屏幕底部 |
nL |
移動到屏幕底部第n行 |
:x |
x爲一個數字,標識移動到行號爲x的行 |
控制命令
CTRL+d |
向前滾動半屏 |
CTRL+f |
向前滾動全屏 |
CTRL+u |
向後滾動半屏 |
CTRL+b |
向後滾動全屏 |
CTRL+e |
向上滾動一行 |
CTRL+y |
向下滾動一行 |
CTRL+I |
刷新屏幕 |
編輯文件
i |
在當前光標位置以前插入文本 |
I |
在當前行的開頭插入文本 |
a |
在當前光標位置以後插入文本 |
A |
在當前行的末尾插入文本 |
o |
在當前位置下面建立一行 |
O |
在當前位置上面建立一行 |
刪除字符
x |
刪除當前光標下的字符 |
X |
刪除光標前面的字符 |
dx |
刪除從當前光標到單詞結尾的字符 |
d^ |
刪除從光標到行首的字符 |
D |
刪除從當前光標到行尾的字符 |
dd |
刪除當前光標所在行的字符 |
能夠在命令前面添加一個數字前綴,表示重複操做的次數,例如,2x 表示連續兩次刪除光標下的字符,2dd 表示連續兩次刪除光標所在的行。linux
修改文本
cc |
刪除當前行,進入編輯模式 |
cw |
刪除當前字,進入編輯模式 |
r |
提花當前光標下的字符 |
R |
從當前光標開始替換字符,按Esc鍵退出 |
s |
用輸入的字符代替當前字符,進入編輯模式 |
S |
用輸入的文本代替當前的行,進入編輯模式 |
粘貼複製
yy |
複製當前行 |
nyy |
複製n行 |
yw |
複製一個單詞 |
nyw |
複製n行 |
p |
將複製的文本粘貼到光標的後面 |
P |
將複製的文本粘貼到光標的前面 |
set命令
:set ic |
搜索時忽略大小寫 |
:set ai |
設置自動縮進 |
:set noai |
取消自動縮進 |
:set nu |
顯示行號 |
:set sw |
設置縮進的空格數。例如,將縮進空格數設置爲4::set sw=4。 |
:set ws |
循環搜索:若果知道文件末尾也沒有查找到指定的字符,那麼回到開頭繼續查找 |
:set wm |
設置自動換行。例如,設置距離邊際2個字符時換行::set wm=2 。 |
:set ro |
將文件類型改成只讀 |
:set term |
輸出終端類型 |
:set bf |
忽略輸入的控制字符,如BEL、BS、CR |