3.1 Vim使用總結

目錄

0 簡介

1 vim打開文件

2 vim的模式

2.1 三種主要模式

2.2 模式轉換

2.3 關閉文件

2.4 擴展命令模式

2.5 命令模式光標跳轉

2.5.1 字符間跳轉

2.5.2 單詞間跳轉

2.5.3 當前頁跳轉

2.5.4 行首行尾跳轉

2.5.5 行間移動

2.5.6 句間移動

2.5.7 段落間移動

2.5.8 命令行模式翻屏

2.6 命令模式操作

2.6.1 字符編輯

2.6.2 替換命令(r, replace)

2.6.3 刪除命令

2.6.4 複製命令

2.6.5 粘貼(p, paste)

2.6.6改變命令(c, change)

2.6.7 命令模式實用技巧

2.6.8 撤消更改

2.7 擴展命令模式

2.7.1 地址定界

2.7.2 查找

2.9 vim寄存器

2.10 編輯二進制文件

2.11 可視化模式

2.12 多文件模式和多窗口

2.13 定製vim工作特性

2.13.1 配置文件中定義vim的特性

2.13.2 設置特性

2.13 vim幫助


0 簡介

vi: Visual Interface,文本編輯器

文本編輯種類:

行編輯器: sed

全屏編輯器:nano, vi

Vim即 Vi Improved

其他編輯器:

gedit 一個簡單的圖形編輯器

gvim 一個Vim編輯器的圖形版本

1 vim打開文件

# vim [OPTION]... FILE...
+#                 打開文件後,讓光標處於第#行的行首,+默認行尾
+/PATTERN          打開文件後,直接讓光標處於第一個被PATTERN匹配到的行的行首
–b file            二進制方式打開文件
–d file1 file2…     比較多個文件
-m file             只讀打開文件
ex  file 或 vim –e  直接進入ex模式

如果該文件存在,文件被打開並顯示內容

如果該文件不存在,當編輯後第一次存盤時創建它

 

2 vim的模式

2.1 三種主要模式

  1. 命令(Normal)模式:默認模式,移動光標,剪切/粘貼文本
  2. 插入(Insert)或編輯模式:修改文本
  3. 擴展命令(extended command )模式:保存,退出等

注:

Esc鍵 退出當前模式

Esc鍵 Esc鍵 總是返回到命令模式

 

2.2 模式轉換

  • 命令模式 --> 插入模式
i insert, 在光標所在處輸入

I 在當前光標所在行的行首輸入

a append, 在光標所在處後面輸入

A 在當前光標所在行的行尾輸入

o 在當前光標所在行的下方打開一個新行

O 在當前光標所在行的上方打開一個新行

 

  • 插入模式 --------> 命令模式
ESC
  • 命令模式 --------> 擴展命令模式
:
  • 擴展命令模式 --------> 命令模式
ESC,enter

 

2.3 關閉文件

  • 在擴展命令模式下:
:q 退出

:q! 強制退出,丟棄做出的修改

:wq 保存退出

:x 保存退出

  • 在命令模式下:
ZZ 保存退出

ZQ 不保存退出

2.4 擴展命令模式

按“:”進入Ex模式,創建一個命令提示符: 處於底部的屏幕左側

命令:

w       寫(存)磁盤文件
wq     寫入並退出
x        寫入並退出
q        退出
q!         不存盤退出,即使更改都將丟失
r filename    讀文件內容到當前文件中
w  filename 將當前文件內容寫入另一個文件
!command   執行命令 (執行完命令還可以返回繼續編輯)
r!command 讀入命令的輸出

 

 

2.5 命令模式光標跳轉

2.5.1 字符間跳轉

h: 左 l: 右 j: 下 k: 上 
#COMMAND:跳轉由#指定的個數的字符

2.5.2 單詞間跳轉

w:下一個單詞的詞首 e:當前或下一單詞的詞尾 b:當前或前一個單詞的詞首 
#COMMAND:由#指定一次跳轉的單詞數

2.5.3 當前頁跳轉

H:頁首 M:頁中間行 L:頁底 
zt:將光標所在當前行移到屏幕頂端 
zz:將光標所在當前行移到屏幕中間 
zb:將光標所在當前行移到屏幕底端

2.5.4 行首行尾跳轉

^: 跳轉至行首的第一個非空白字符 
0: 跳轉至行首 
$: 跳轉至行尾

2.5.5 行間移動

#G:    等同於擴展命令模式下 :# 跳轉至由#指定行 
G:     最後一行 
1G, gg: 第一行

2.5.6 句間移動

):下一句 (:上一句

2.5.7 段落間移動

}:下一段 {:上一段

 

2.5.8 命令行模式翻屏

Ctrl+f: 向文件尾部翻一屏 
Ctrl+b: 向文件首部翻一屏 
Ctrl+d: 向文件尾部翻半屏 
Ctrl+u:向文件首部翻半屏

2.6 命令模式操作

2.6.1 字符編輯

x: 刪除光標處的字符,其實是剪切 
#x: 刪除光標處起始的#個字符 
xp: 交換光標所在處的字符及其後面字符的位置。p是粘貼,其實此命令是剪切粘貼 
~:轉換大小寫 
J:刪除當前行後的換行符

2.6.2 替換命令(r, replace)

r: 替換光標所在處的字符 
R:切換成REPLACE模式,此模式下,任何輸入都是替代

2.6.3 刪除命令

d: 刪除命令,可結合光標跳轉字符,實現範圍刪除 
d$: 刪除到行尾 d^:刪除到非空行首 
d0:刪除到行首 
dw: 
de: 
db: 
dgg: 從光標刪到第一行 
#COMMAND

dd: 刪除光標所在的行,其實是剪切 
#dd:多行刪除 
D:從當前光標位置一直刪除到行尾,等同於d$

 

2.6.4 複製命令

y: 複製,行爲相似於d命令 
y$ 
y0 
y^ 
ye 
yw 
yb 
#COMMAND 
yy:複製行 
#yy: 複製多行 
Y: 複製整行

 

2.6.5 粘貼(p, paste)

p:緩衝區存的如果爲整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的後面

P:緩衝區存的如果爲整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面

 

2.6.6改變命令(c, change)

c: 修改後切換成插入模式

命令模式 --> 插入模式

c$ 
c^ 
c0 
cb 
ce 
cw 
#COMMAND 
cc:刪除當前行並輸入新內容,相當於S 
#cc 
C:刪除當前光標到行尾,並切換成插入模式

 

 

2.6.7 命令模式實用技巧

100iwang [ESC] 粘貼“wang”100次
格式:
<start position><command><end position>
Command:
y 複製、d 刪除、gU 變大寫、gu 變小寫
例如 0y$ 命令意味着:
0 → 先到行頭
y → 從這裏開始拷貝
$ → 拷貝到本行最後一個字符
ye 從當前位置拷貝到本單詞的最後一個字符
di"   光標在”“之間,則刪除”“之間的內容
yi(   光標在()之間,則複製()之間的內容
vi[   光標在[]之間,則選中[]之間的內容
dtx  刪除字符直到遇見光標之後的第一個 x 字符
ytx  複製字符直到遇見光標之後的第一個 x 字符

 

2.6.8 撤消更改

u撤銷最近的更改
#u撤銷之前多次更改
U 撤消光標落在這行後所有此行的更改
按Ctrl - r重做最後的“撤消”更改
. 重複前一個操作
n.重複前一個操作n次

 

2.7 擴展命令模式

2.7.1 地址定界

:start_pos,end_pos
#         具體第#行,例如2表示第2行
#,#       從左側#表示起始行,到右側#表示結尾行
#,+#      從左側#表示的起始行,加上右側#表示的行數
:2,+3    表示2到5行
.         當前行
$         最後一行
.,$-1     當前行到倒數第二行
%         全文, 相當於1,$        %d 全部刪除
pat1/,/pat2/
    從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
    #,/pat/
    /pat/,$
使用方式:後跟一個編輯命令
    d
    y
    w file: 將範圍內的行另存至指定文件中
    r  file:在指定位置插入指定文件中的所有內容

2.7.2 查找

格式:

 

/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
n:與命令同方向
N:與命令反方向

注:如果要查找/var,需要轉義:/\/var

 

查找並替換

s: 在擴展模式下完成查找替換操作
    格式:s/要查找的內容/替換爲的內容/修飾符
    要查找的內容:可使用模式
    替換爲的內容:不能使用模式,但可以使用\1, \2, ...等後向引用符號;還可以使
    用“&”引用前面查找時查找到的整個內容
修飾符:
    i: 忽略大小寫
    g: 全局替換;默認情況下,每一行只替換第一次出現
    gc:全局替換,每次替換前詢問
查找替換中的分隔符/可替換爲其它字符,例如
    s@/etc@/var@g
    s#/boot#/#i

 

2.9 vim寄存器

  • 有26個命名寄存器(就是剪切板)和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享
  • 寄存器名稱a,b,…,z,格式:“寄存器 放在數字和命令之間

如:3"tyy 表示複製3行到t寄存器中

"tp 表示將t寄存器內容粘貼

  • 未指定,將使用無命名寄存器
  • 有10個數字寄存器,用0,1,…,9表示,0存放最近複製內容,1存放最近刪除內容。

當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不同會話間共享。

  • ma 將當前位置標記爲a,26個字母均可做標記, mb 、 mc 等等;
  • 'a 跳轉到a標記的位置; 實用的文檔內標記方法,文檔中跳躍編輯時很有用
  • qa 錄製宏 a,a爲宏的名稱
  • q 停止錄製宏,
  • @a 執行宏 a
  • @@ 重新執行上次執行的宏

 

2.10 編輯二進制文件

以二進制方式打開文件

vim –b binaryfile

擴展命令模式下,利用xxd命令轉換爲可讀的十六進制

:%!xxd

編輯二進制文件

擴展命令模式下,利用xxd命令轉換回二進制

:%!xxd –r

然後保存退出。

 

2.11 可視化模式

  • 允許選擇的文本塊
    • v 面向字符
    • V 面向行
    • ctrl-v 面向塊
  • 可視化鍵可用於與移動鍵結合使用:
    • w ) } 箭頭等
  • 突出顯示的文字可被刪除,複製,變更,過濾,搜索,替換等

 

2.12 多文件模式和多窗口

vim FILE1 FILE2 FILE3 ...
:next 下一個
:prev 前一個
:first 第一個
:last 最後一個
:wall 保存所有
:qall 退出所有
:wqall

 

使用多個“窗口”

多文件分割

vim -o|-O FILE1 FILE2 ...
-o: 水平分割
-O: 垂直分割
在窗口間切換:Ctrl+w, Arrow

單文件窗口分割:

Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相鄰窗口
ctrl+w,o:取消全部窗口
:wqall 退出

ctrl+s 鎖屏幕

+q 退出

 

2.13 定製vim工作特性

2.13.1 配置文件中定義vim的特性

全局:/etc/vimrc

個人:~/.vimrc 自己建

擴展模式:當前vim進程有效

2.13.2 設置特性

(1) 行號

顯示:set number, 簡寫爲set nu

取消顯示:set nonumber, 簡寫爲set nonu

(2) 忽略字符的大小寫

啓用:set ic

不忽略:set noic

(3) 自動縮進

啓用:set ai

禁用:set noai

(4) 智能縮進

啓用:smartindent 簡寫 set si

禁用:set nosi

(5) 高亮搜索

啓用:set hlsearch

禁用:set nohlsearch

(6) 語法高亮

啓用:syntax on

禁用:syntax off

(7) 顯示Tab和換行符 ^I 和$顯示

啓用:set list

禁用:set nolist

(8) 文件格式

啓用windows格式:set fileformat=dos

啓用unix格式:set fileformat=unix

簡寫:set ff=dos|unix

(9) 設置文本寬度

set textwidth=65 (vim only)

set wrapmargin=15

(10) 設置光標所在行的標識線

啓用:set cursorline,簡寫cul

禁用:set no cursorline

(11) 複製保留格式

啓用:set paste

禁用:set nopaste

 

 

2.13 vim幫助

  • Set 幫助
    • :help option-list
    • :set or :set all
  • vi/vim內置幫助
    • :help
    • :help topic
    • Use :q to exit help
  • vimtutor
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章