一 最基本命令
1、三種模式:編輯模式、插入模式、命令模式。
2、簡單命令
vi [filename] 打開、新建文件
i、a、o、I、A、O 從編輯模式進入插入模式
[ESC] 退出插入模式,進入編輯模式
:w 保存文件
:q 退出文件
:q! 不保存,強制退出
:wq 保存,退出
:ZZ 保存,退出
:e! 不保存,返回到初始文件
二.簡單編輯命令
1、文本編輯和操作命令
|
|
編輯行爲
|
命令
|
在當前位置插入文本
在行首插入文本
|
i
I
|
在當前位置追加文本
在行尾追加文本
|
a
A
|
在光標所在行的下面新建一行
在光標所在行的上面新建一行
|
o
O
|
刪除行並替換文本
|
S
|
使用新文本覆蓋現有文本
|
R
|
合併當前行和下一行
|
J
|
轉換大小寫
|
~
|
重複上次操作
|
.
|
取消上次操作
|
u
|
恢復行到初始狀態
|
U
|
2、編輯命令
|
|||
文本目標
|
修改
|
刪除
|
複製
|
1個單詞
|
cw
|
dw
|
yw
|
2個單詞
|
2cw或者c2w
|
2dw或者d2w
|
2yw或者y2w
|
向後3個單詞
|
3cb或者c3b
|
3db或者d3b
|
3yb或者y3b
|
1行
|
cc
|
dd
|
yy或者Y
|
到行首
|
c0
|
d0
|
y0
|
到行尾
|
c$或者C
|
d$或者D
|
y$
|
單個字符
|
r
|
x或者X
|
y1或者yh
|
5個字符
|
5s
|
5x
|
5y1
|
3、移動命令
|
|
移動
|
命令
|
←↓↑→
|
h,j,k,l
|
到下一行的首字符
|
+
|
道上一行的首字符
|
-
|
到單詞尾部
|
e或者E
|
按單詞前移
|
w或者W
|
按單詞後移
|
b或者B
|
到行首
|
0
|
到行尾
|
<Ctrl> + <->減小字號
<Ctrl> + <Shift> + <+>增大字號
三 高級設置(編程應用)
1、在$HOME下新建.vimrc
#touch .vimrc
2、打開
#vim .vimrc
3、編輯
:set all
"顯示目前所有的環境參數設定值
set number
set smartindent
set showmatch
set shiftwidth=4
“設置當行之間交錯時使用4個空格
4、完成,現在你可以非常方便的編寫你的c、c++程序了。以上是我的簡單的設置,大家有什麼好的設置儘管告訴我哦,我會很感激的!
向前滾動一屏
|
Ctrl + f
|
向後滾動一屏
|
Ctrl + b
|
向前滾動半屏
|
Ctrl + d
|
向後滾動半屏
|
Ctrl + u
|
向前滾動一行
|
Ctrl + e
|
向後滾動一行
|
Ctrl + y
|
把當前行移動到屏幕頂部並滾動
|
z
|
把當前行移動到屏幕中部並滾動
|
z.
|
把當前行移動到屏幕底部並滾動
|
z-
|
刷新屏幕
|
Ctrl + l
|
移動到屏幕首行
|
H
|
移動到屏幕中間行
|
M
|
移動到屏幕末行
|
L
|
移動到下一行的首字母
|
return
|
移動到下一行的首字母
|
+
|
移動到上一行的首字母
|
-
|
移動到當前行的第n列
|
n|
|
移動到詞尾
|
e
|
移動到當前句子的開始
|
(
|
移動到下一句的開始
|
)
|
移動到當前段的開始
|
{
|
移動到下一段的開始
|
}
|
移動到當前節的開始
|
[[
|
移動到下一節的開始
|
]]
|
向前授索模式
|
/pattern
|
向後授索模式
|
?pattern
|
重複上次授索
|
n
|
反方向重複上次授索
|
N
|
向前重複上次授索
|
/
|
向後重複上次授索
|
?
|
移動到第n行
|
nG
|
移動到文件的尾部
|
G
|
顯示當前行
|
Ctrl+g
|
跳到文件頭
:1 或 gg
跳到文件尾
:$ 或 G (大寫。當前若大小寫鎖定直接按g,未鎖定則按shift+g)
vi分屏操作
1、在同一窗口中打開多個文件:
vi file1 file2 file3
:n 切換到下一個文件 (n=next)
:N 切換到上一個文件
2、在不同窗口中打開多個文件:
如果已經打開一個了一個文件,則在vi的命令輸入狀態下輸入:
:vsp filepath(垂直分屏)
:sp filepath(水平分屏)
如果還沒打開任何文件,則輸入命令
vim -on file1 file2 (水平分屏)
vim -On file1 file2(垂直分屏)
其中n爲打開的文件數(分屏數)
ctrl+w s 對當前文檔內容分屏顯示
ctrl+w q 關閉所處分屏
ctrl+w o 僅顯示當前分屏內容
ctrl+w j / k(h / l) 上下(左右)選擇分屏
ctrl+w+w 來回在分屏間切換
1、啓動vi時的選項:
(1)、vi file 打開文件,新建文件
(2)、vi +n file 打開文件到第10行
(3)、vi + file 打開文件到最後一行
(4)、vi +/patten file 打開文件到模式首次出現的位置
(5)、vi -r filename :在上次正用vi編輯時發生系統崩潰,恢復filename
2、只讀方式
(1)、vi -R file (或者view file)以只讀方式打開
(2)、w! 強制寫保存
(3)、wq!強制寫保存並退出
3、恢復緩存區(用於系統崩潰)
(1)、ex -r 將得到系統所有以保存的文件列表
(2)、vi -r 將得到系統所有以保存的文件列表
(3)、vi -r file 恢復文件file的已編輯緩存區
4、利用緩存區
進行編輯時,上一次的刪除(d,x),複製(y)都將保存在緩存區中。
vi把前9次刪除操作保存在編號緩存區中,可以通過訪問編號緩存區中的任何一個來恢復前9次操作中的任何一個。(小型的刪除操作將不會保存)。
實例講解:
(1)、"dyy 複製當前行到d緩衝區
(2)、"a7yy 複製接下來的7行到a緩衝區中
(3)、"dP 粘貼d緩衝區中的內容到光標前
(4)、"dp 粘貼d緩衝區中的內容到光標後
(5)、"a5dd 刪除接下來的5行到a緩衝區中
(6)、"zd) 刪除從光標到當前句尾之間的文本,並將其保存在z緩衝區中
(7)、"Zy) 把下一個句子添加到z緩衝區中(緩衝區大寫(如Z)表示追加到(z)緩衝區中)
5、標記自己的位置
(1)、mx 用x(x可爲任何字符)標記當前位置
(2)、'x (單引號)移動光標到x所標記的行的首字符
(3)、`x (反引號)移動光標到x所標記的字符
1、替換命令
(1)、:s/old/new/ 把當前行中模式old的第一次出現替換爲new
(2)、:s/old/new/g 把當前行中的每一個old替換爲new
(3)、:50,100s/old/new/g 把第50-100行之間的old替換爲new
(4)、:1,$s/old/new/g 把整個文本中的old替換爲new
(5)、:%s/old/new/g 把整個文本中的old替換爲new
(6)、:1,$s/old/new/gc 替換前要進行確認(想替換輸入 y ,不想替換直接 回車)
2、簡單組合
利用vi的n(重複上次授索)和點(.)(重複上次命令),只修改那些不正確的。
修改必要的hao爲jun
/hao 授索hao
cwjun 修改爲jun
n 重複授索,跳過一次修改
n 重複授索,向下搜索
N 重複搜索,向上搜索
七 高級編輯(set用法)
1、常用收集如下:(vi set)
set autoindent
在插入模式下,對每行按與上行同樣的標準進行縮進,與shiftwidth選項結合使用
set list
把製表符顯示爲^I ,用$標示行尾(使用list分辨尾部的字符是tab還是空格)
set number
顯示行號
set readonly
文件只讀,除非使用!可寫
set shiftwidth
反向製表符中的空格數目
set showmatch
在vi中輸入),}時,光標會暫時的回到相匹配的(,{ (如果沒有相匹配的就發出錯誤信息的鈴聲),編程時很有用
set tabstop
指定tab縮進的字符數目
set wrapscan
授索在文件的兩端繞回
2、vim set 在vi的基礎上增加了如下(常用):
set smartindent
set cindent
以上兩行都是編程用的c自動縮進
3、set 設置可以在命令行輸入,也可以寫在$HOME下的.exrc (如果是vi)或者.vimrc(如果是vim)中。寫進去很方便的。