vi操作(個人整理)

一 最基本命令


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、移動命令
移動
命令
←↓↑→
hjkl
到下一行的首字符
+
道上一行的首字符
-
到單詞尾部
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

依據上面的對起格式,智能的選擇自動縮進方式,對於類似C語言編程,很有用

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)中。寫進去很方便的。


發佈了18 篇原創文章 · 獲贊 35 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章