vim使用手冊

vim使用手冊

[toc]


一. vim簡介

Vim是從vi發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。和Emacs並列成爲類Unix系統用戶最喜歡的編輯器。
Vim的第一個版本由布萊姆·米勒在1991年發佈。最初的簡稱是Vi IMitation,隨着功能的不斷增加,正式名稱改成了Vi IMproved。現在是在開放源代碼方式下發行的自由軟件。
布萊姆·米勒在80年代末購入他的Amiga計算機時,Amiga上還沒有他最常用的編輯器vi。Bram從一個開源的vi複製Stevie開始,開發了Vim的1.0版本。最初的目標只是完全複製vi的功能,那個時候的Vim是Vi IMitation(模擬)的簡稱。1991年Vim 1.14版被"Fred Fish Disk #591"這個Amiga用的免費軟體集所收錄了。1992年1.22版本的Vim被移植到了UNIX和MS-DOS上。從那個時候開始,Vim的全名就變成Vi IMproved(改良)了。
在這之後,Vim加入了不計其數的新功能。做爲第一個里程碑的是1994年的3.0版本加入了多視窗編輯模式(分區視窗)。從那之後,同一螢幕可以顯示的Vim編輯文件數可以不止一個了。1996年發佈的Vim 4.0是第一個利用GUI(圖形用戶界面)的版本。1998年5.0版本的Vim加入了highlight(語法高亮)功能。2001年的Vim 6.0版本加入了代碼摺疊、插件、多國語言支持、垂直分區視窗等功能。2006 年5月發佈的Vim 7.0版更加入了拼字檢查、上下文相關補全,標籤頁編輯等新功能。2008年8月發佈的Vim 7.2,合併了Vim 7.1以來的所有修正補丁,並且加入了腳本的浮點數支持。現在最新的版本是2013年8月發佈的Vim 7.4,這個版本除了包含最新修正的補丁之外,還加入了“永久撤銷”、“Blowfish算法加密”、“文本隱藏”和“Lua以及Python3的接口”等新功能。


二. vim的使用方法

1. 打開文件

vim是以vim命令後加文件名的方式來打開文件的,但vim功能強大,在打開文件時還可以加入參數實現更多的功能。用法:vim [OPTION]... FILE...

vim命令的選項及作用:

選項 含義
+ 打開文件後光標默認在尾行行首。
+# 打開文件後光標處於第#行的行首。
+/PATTERN 打開文件後,直接讓光標處於第一個被PATTERN匹配到的行的行首
-b file 以二進制方式打開文件
-d file1 file2… 比較多個文件
-m file 以只讀方式打開文件,打開後對文件的修改無法保存。
ex file或vim –e 直接進入擴展命令模式

補充:

  • 如果該文件存在,文件被打開並顯示內容
  • 如果該文件不存在,當編輯後第一次存盤時創建它
  • 如果目錄不存在,將無法保存編輯內容

2. vim的三種模式

vim是一款模式編輯器,對vim的操作進行在vim的三種模式之上。所謂三種模式分別是:1.命令(Normal)模式 ,默認模式,主要作用是移動光標,剪切/粘貼文本。2.插入(Insert)或編輯模式 ,主要作用是修改文本。3.擴展命令(extended command )模式 ,主要作用是保存,退出等。所以想要嫺熟操作vim,在三種模式之間的切換是必不可少的。vim的模式切換是以命令模式爲基礎的,也就是打開文件時的第一個界面,vim打開文件默認是在命令模式界面。所以無論你是要進入擴展模式還是插入模式,都需要在命令模式進行切換,擴展模式和插入模式之間是不能直接切換的。

vim三種主要模式之間的切換:
按鍵 作用
Esc鍵 退出當前模式
2Esc鍵 總是返回到命令模式
ESC 插入模式轉到命令模式
命令模式轉到擴展命令模式
2ESC,enter 擴展命令模式轉到命令模式

3.命令模式

1.命令模式進入插入模式

按鍵 作用
i insert, 在光標所在處輸入
I 在當前光標所在行的行首輸入
a append, 在光標所在處後面輸入
A 在當前光標所在行的行尾輸入
o 在當前光標所在行的下方打開一個新行
O 在當前光標所在行的上方打開一個新行

2.命令模式光標間跳轉

2.1字符間跳轉:
按鍵 作用
h
l
j
k
#command 跳轉由#指定的個數的字符
2.2單詞間跳轉:
按鍵 作用
w 下一個單詞的詞首
e 當前或下一單詞的詞尾
b 當前或前一個單詞的詞首
#COMMAND 由#指定一次跳轉的單詞數
2.3當前頁跳轉:
按鍵 作用
H 頁首
M 頁中間行
L 頁底
2.4行首行尾跳轉:
按鍵 作用
^ 跳轉至行首的第一個非空白字符
0 跳轉至行首
$ 跳轉至行尾
2.5行間移動:
按鍵 作用
#G 跳轉至由#指定行
G 最後一行
1G,gg 第一行
2.6句間移動
按鍵 作用
) 下一句
( 上一句
2.7 段落間移動:
按鍵 作用
} 下一段
{ 上一段

3.命令模式翻屏操作

按鍵 作用
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏

4.命令模式編輯操作

4.1字符編輯:
按鍵 作用
x 刪除光標處的字符
#x 刪除光標處起始的#個字符
xp 交換光標所在處的字符及其後面字符的位置
~ 轉換大小寫
J 刪除當前行後的換行符
gU 變大寫
gu 變小寫
100 i sun [ESC] 粘貼“sun”100次
4.2替換命令(r, replace)
按鍵 作用
r 替換光標所在處的字符
R 切換成REPLACE模式,可進行選擇替換
4.3刪除命令(d,delete)
按鍵 作用
d 刪除命令,可結合光標跳轉字符,實現範圍刪除
d$ 刪除到行尾
d^ 刪除到非空行首
d0 刪除到行首
dw 刪除到下一個單詞的詞首
de 刪除到當前或下一單詞的詞尾
db 刪除到當前或前一個單詞的詞首
#COMMAND 刪除到由#指定一次跳轉的單詞數
dd 刪除光標所在的行
#dd 刪除光標所在處由#指定的多行
D 從當前光標位置一直刪除到行尾,留空行,等同於d$
4.4複製命令(y, yank):
按鍵 作用
y 複製,行爲相似於d命令
y$ 複製到行尾
y0 複製到行首
y^ 複製到非空行首
ye 複製到當前或下一單詞的詞尾
yw 複製到下一個單詞的詞首
yb 複製到當前或前一個單詞的詞首
#COMMAND 複製到由#指定一次跳轉的單詞數
yy 複製整行
#yy 複製光標所在處由#指定的多行
Y 從當前光標位置一直複製到行尾,留空行,等同於d$
4.5粘貼命令(p, paste):
按鍵 作用
p 緩衝區存的如果爲整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的後面
P 緩衝區存的如果爲整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
4.6改變命令(c, change)
按鍵 作用
c 修改後切換成插入模式
c$ 刪除到行尾,並切換成插入模式
c^ 刪除到非空行首,並切換成插入模式
c0 刪除到行首,並切換成插入模式
cb 刪除到當前或前一個單詞的詞首,並切換成插入模式
ce 刪除到當前或下一單詞的詞尾,並切換成插入模式
cw 刪除到下一個單詞的詞首,並切換成插入模式
#COMMAND 刪除到由#指定一次跳轉的單詞數,並切換成插入模式
cc 刪除當前行,並切換成插入模式
#cc 刪除#指定的多行,並切換成插入模式
C 刪除當前光標到行尾,並切換成插入模式
4.7撤銷更改
按鍵 作用
u 撤銷最近的更改
#u 撤銷之前多次更改
U 撤消光標落在這行後所有此行的更改
Ctrl-r 重做最後的“撤消”更改
. 重複前一個操作
n. 重複前一個操作n次

4. 擴展命令模式

4.1擴展命令模式下的簡單命令用法:

在命令模式下按“:”進入擴展命令模式,進入後,編輯器的底部左下角會出現一個命令提示符,在這個命令提示符後面輸入命令,可以進行擴展命令模式下的操作。

命令 作用
w 寫(存)磁盤文件
wq 寫入並退出
x 寫入並退出
q 退出
q! 不存盤退出,即使更改都將丟失
r filename 讀文件內容到當前文件中
w filename 將當前文件內容寫入另一個文件
!command 執行命令
r!command 讀入命令的輸出

4.2擴展命令模式:地址定界

在擴展命令模式下進行地址定界方法一:利用行數進行定界
格式|:開始#,結束#

用法 含義
# 具體第#行,例如2表示第2行
#,# 從左側#表示起始行,到右側#表示結尾行
#,+# 從左側#表示的起始行,加上右側#表示的行數
2,+3 表示2到5行
. 表示當前行
$ 表示最後一行
. 或$-1 當前行到倒數第二行
% 全文, 相當於1,$

在擴展命令模式下進行地址定界方法二:利用正則進行定界,從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束。
格式| :/正則1/,/正則2/
#,/pat/ -------->從第#行開始,一直到第一次被pat匹配到的行結束。
/pat/,$ --------->從第一次被pat模式匹配到的行開始,到行尾結束。
使用方式:後跟一個編輯命令

用法 含義
d 刪除匹配到的內容
y 複製匹配到的內容
w file 將範圍內的行另存至指定文件中
r file 在指定位置插入指定文件中的所有內容

4.3擴展命令模式:查找

查找命令:

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

4.4擴展命令模式:查找並替換

擴展命令模式下,在命令提示符後面輸入字母“s”,然後按格式輸入要查找和替換的內容,便可進行查找替換。

格式:s/要查找的內容/替換爲的內容/修飾符

格式項 作用
要查找的內容 分割符後輸入要查找的內容,可使用模式,也就是正則表達式。
替換爲的內容 不能使用模式,但可以使用\1, \2, ...等後向引用符號;還可以使用“&”引用前面查找時查找到的整個內容
修飾符:
i 忽略大小寫
g 全局替換;默認情況下,每一行只替換第一次出現
gc 全局替換,每次替換前詢問
如果查找和替換的內容中包含路徑,再使用"/"作爲分割符就不方便了,這時可以使用@、#等特殊符號來做分割符。
例如:
    s@/etc@/var@g
    s#/boot#/#i

5.vim的寄存器

  • 有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享
  • 寄存器名稱a,b,…,z,格式:“寄存器放在數字和命令之間
    如:3"tyy 表示複製3行到t寄存器中
    "tp 表示將t寄存器內容粘貼

  • 未指定,將使用無命名寄存器
  • 有10個數字寄存器,用0,1,…,9表示,0存放最近複製內容,1存放最近刪除內容。當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不同會話間共享

6.編輯二進制文件

以二進制方式打開文件,例如:vim –b binaryfile
擴展命令模式下,利用xxd命令轉換爲可讀的十六進制
:%!xxd
擴展命令模式下,利用xxd命令轉換回二進制,進行二進制文件的編輯。
:%!xxd –r

7.可視化模式

在可視化模式下允許移動光標選擇文本塊,選中的文字可被刪除,複製,變更,過濾,搜索,替換等 。

按鍵 作用
v 命令模式下,進入面向字符的可視化模式
V 命令模式下,進入面向行的可視化模式
ctrl-v 命令模式下,進入面向塊的可視化模式
w 選擇一個單詞
) 選擇一句
} 選擇一段
箭頭 字符間移動

8.多文件模式

多文件模式可以同時打開多個文件,
用法:vim FILE1 FILE2 FILE3 ...

命令 作用
:next 下一個
:prev 前一個
:first 第一個
:last 最後一個
:wall 保存所有
:qall 退出所有
:wqall 保存退出所有

9.使用多個“窗口”

多窗口模式可以同時打開多個窗口進行編輯,
用法:vim -o|-O FILE1 FILE2 ...
-o: 水平分割
-O: 垂直分割
在窗口間切換:Ctrl+w

單文件窗口分割方法:

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

10.關閉文件

10.1擴展模式退出編輯器:

選項 含義
:q 退出
:q! 強制退出,丟棄做出的修改
:wq 保存退出
:x 保存退出

10.2命令模式下退出編輯器:

選項 含義
ZZ 保存退出
ZQ 不保存退出

三. 定製vim的工作特性

定義vim的工作特性可以爲使用帶來許多便利,增加使用樂趣。定製vim的工作特性有兩種方法,一種是將設置寫入配置文件,這樣可以永久有效。另一種方法是在vim的擴展模式下直接設置,只對當前vim進程有效。
擴展模式:當前vim進程有效
配置文件:永久有效
全局:/etc/vimrc ----->將配置寫入此文件將對所有用戶有效。
個人:~/.vimrc ------->將配置寫入此文件只對個人有效。

常用工作特性設置參數:

特性 參數
行號顯示 set number, 簡寫爲set nu
行號取消顯示 set nonumber, 簡寫爲set nonu
括號成對匹配 set showmatch, 簡寫爲set sm
括號取消成對匹配 set nosm
自動縮進啓用 set ai
自動縮進禁用 set noai
高亮搜索啓用 set hlsearch
高亮搜索禁用 set nohlsearch
語法高亮啓用 syntax on
語法高亮禁用 syntax off
忽略字符的大小寫啓用 set ic
忽略字符的大小寫不忽略 set noic
文件格式啓用windows格式 set fileformat=dos
文件格式啓用unix格式 set fileformat=unix
設置文本寬度 set textwidth=65 (vimonly)
設置文本寬度 set wrapmargin=15

四. vi/vim內置幫助

vimtutor 命令是以vim編輯器打開vim幫助文檔,在裏面可以邊看幫助文檔邊練習操作,非常便捷,是學習vim的必備工具。而且在裏面做的修改不會保存。
在擴展命令模式下輸入以下命令可以查看vim內置幫助:

  • help
  • helptopic
  • help option-list
  • setor:set all
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章