What
Vim是由Vi發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在Unix& Unix Like操作系統中被廣泛使用。和Emacs并列成為Unix& Unix Like操作系統中最受歡迎的文本編輯器
When& Who
Vim的第一個版本由布萊姆·米勒在1991年發布
Vim的具體操作介紹
Vim是模式化編輯器,其基本模式為:
編輯模式,也叫命令模式
輸入模式
末行模式:內置有命令行接口
打開文件:
# vim [OPTION] [file….]:如果文件不存在,創建文件
+#:打開文件后,直接讓光標處于第#行的行瘦
/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
模式轉換:
編輯模式 à 輸入模式
i, Insert:在光標所在處開始輸入
a, append:在光標所在處后面開始輸入
o:在光標所在處下方打開新的一行開始輸入
I:在光標所在處行首開始輸入
A:在光標所在處行尾開始輸入
O:在光標所在處的上方打開一個新行
輸入模式 à 編輯模式
鍵盤上的”Esc”鍵
編輯模式 à 末行模式
鍵盤上的“:”鍵
末行模式 à 編輯模式
鍵盤上的”Esc”鍵
如何關閉文件:
ZZ 保存并退出
:q 退出
:!q 強制退出,不保存此前編輯的內容
:wq 保存此前編輯的內容并退出
:x 保存并退出
:w /pat/to/somefile,將當前文件另存到指定路徑
光標跳轉:
k鍵:上
j鍵:下
h鍵:左
l鍵:右
#[k|j|h|l]:跳轉有#自定個數的字符或者行數
單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一個單詞的詞尾
b:當前或前一個單詞的詞首
#[w|e|b]:跳轉由#指定的單詞個數
行首行尾跳轉:
0:跳轉至行首
$:跳轉至行首
^:跳轉至行首第一個非空白字符
行間跳轉:
#G:跳轉至由#指定的行
1G,gg:跳轉至文件的第一行
G:跳轉至文件的最后一行
句間跳轉:
):下一句
(:前一句
段間跳轉:
}:下一段落
{:前一段落
翻屏:
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
Enter:按行向后翻屏
Vim的編輯明令
字符編輯:
x:刪除光標所在處的字符
#x:刪除以光標所在處為啟始位置的#個字符
xp:交換光標所在處字符與后面字符的位置
替換命令:
r:替換光標所在處的字符
刪除命令:
d$:刪除光標所在處至行尾的所有字符
d^:刪除光標所在處至行首非空白字符的內容
dw:刪除光標所在處字符至下一個單詞詞首的所有字符
de:刪除當前單詞光標所在處字符至詞尾內容或至下一個但單詞詞尾的所有字符
db:刪除光標所在處至前一個單詞的詞首字符的所有內容
dd:刪除一行
#[d$|d^|dw|dw|de|db|dd]:刪除由#為數字指定的命令內容
粘貼命令:
p:緩沖區的內容如果為整行,則粘貼在當前光標所在處的下方;否則,粘貼在光標所在處的后方
P:緩沖區的內容如果為整行,則粘貼在當前光標所在處的上方;否則,粘貼在光標所在處的前方
復制命令(yank, y)
y:復制,工作行為類似于d命令
y$:復制光標所在處至行尾的所有字符
y^:復制光標所在處至行首非空白字符的所有內容
yw:復制光標當前位置到下一個單詞詞首的所有內容
ye:復制光標當前位置到下一個單詞詞尾的所有內容
yb:復制光標當前位置到當前單詞詞首的所有內容
yy:復制整行內容
#[y$|y^|yw|ye|yb|yy]:復制由#指定為數字的命令的內容
改變命令(change,c)
使用c命令的同時,從 編輯模式 à輸入模式,實現刪除功能并轉為輸入模式
c$:刪除光標所在處至行尾的所有字符內容并轉為輸入模式
c^:刪除光標所在處至行首非空白字符的所有內容并轉為輸入模式
cw:刪除光標所在處至下一個單詞詞首的內容并轉入輸入模式
ce:刪除光標所在處至當前或下一個單詞詞尾的字符并轉入輸入模式
cb:刪除光標所在處至當前或前一個單詞詞首的字符并轉入輸入模式
c0:刪除光標所在處至行首的所有字符并轉入輸入模式
cc:刪除整行并轉入輸入模式
#[c$|c^|cw|ce|cb|c0|cc|]:刪除由#指定的命令內容
其他編輯操作:
可視化模式:
v:按字符選定
V:按行選定
結合編輯命令:d,c,y
撤銷(undo, u)命令:
u:撤銷此前的操作
#u:撤銷此前的#次操作
Ctrl+r:撤銷此前的撤銷操作
.:重復前一個執行的編輯操作
末行命令模式
地址界定:
:start_pos[,end_pos]
#:特定的第#行,例如”:5”:指定第5行內容
.:當前行
$:最后一行
#,#:指定行范圍。左邊#為起始行,右邊#為結束行
#,+#:指定航范圍。左邊#為起始行絕對編號,右邊+#為相對于左邊#起始行的偏移量。例如5,+7:范圍是從第五行到第12行的內容
.,$-1:當前行到倒數第二行
1,$:第一行到最后一行
%:全文
/PATTERN/:從光標所在處起始的文件向文件尾部查找第一次被模式匹配到的行
例如:/first/,$:查找光標所在處到行尾第一次被first匹配到的行
/pattern1/,/pattern2/:從光標所在處起始第一次被pattern1匹配到的行,至第一次被pattern2匹配到的行之間的所有的行
可結合編輯命令d,c,y,p一同實現編輯命令
w /path/to/somefile:將范圍內的文本保存至指定的文件中
r /path/from/somefile:將指定文件中的文本讀取至指定位置
查找
/PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配的所有字符串
?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配的所有字符串
n:查看下一個,與命令方向相同
N:查找上一個,與命令方向相反
查找并替換
s:末行模式的命令
使用格式
s/要查找的內容/要替換的內容/修飾符
要查找的內容:可以使用正則表達式
要替換的內容:不可以所以用正則表達式,但可以引用
修飾符:
i:忽略大小寫
g:全局替換,意味著一行中如果匹配到多次,則均替換
可把分隔符替換為其他:
s@@@
s###
vim的多文件功能
打開多個文件:
vim FILE1 FILE2 FILE3….
文件間的切換:
:next 下一個文件
:prev 上一個文件
:first 第一個文件
:last 最后一個文件
退出所有的文件:
:wqall 保存所有文件并退出
:wall 保存所有文件
:qall 退出所有文件
多窗口:
-o:水平分隔
-O:垂直分隔
在窗口間進行切換:Ctrl+w, ARROW
注意:單個文件也可以分隔為多個窗口進行查看
Ctrl+w,s:水平分隔窗口
Ctrl+w,v:垂直分隔窗口
定制vim的工作特性:
注意:在末行模式下的設定,僅對當前vim進程有效
如果要永久有效,需要更改配置文件:
全局:/etc/vimrc
個人:~/.vimrc
行號:
顯示行號:set number,簡寫:set nu
取消行號顯示:set nomber,簡寫:setnonu
括號匹配高亮
匹配:set showmatch, set sm
取消:set nosm
自動縮進
啟用:set ai
取消:set noai
高亮搜索
啟用:set hlsearch
禁用:set nohlsearch
語法高亮
啟用:syntax on
禁用:syntax off
忽略字符大小寫:
啟用:set ic
禁用:set noic
獲取幫助:
:help
:help subject
原創文章,作者:mxb93,如若轉載,請注明出處:http://www.www58058.com/48573