vim是乙個向上相容於vi的文字編輯器,可用於編輯各種純文字。它對編輯程式特別有用。
基本模式:
輸入模式:
末行模式:內建的命令列介面
基本使用:
# vim [options] [file ..]
+#:開啟檔案後,直接讓游標處於第#行的行首;
+/pattern:開啟檔案後,直接讓游標處於第乙個被pattern匹配到的行的行;
模式轉換:
i:insert,在游標所在處輸入;
o:在游標所在處的下方開啟乙個新行;
i:在游標所在行的行首輸入;
a:在游標所在行的行尾輸入;
o:在游標所在處的上方開啟乙個新行;
輸入模式 -> 編輯模式
esc鍵
編輯模式 -> 末行模式
:鍵末行模式 -> 編輯模式
esc鍵
關閉檔案:
zz:儲存並退出;
zq:不儲存直接退出;
2.進入末行模式:
:q退出
:q! 強制退出,不儲存此前的編輯操作
:wq儲存並退出;
:w,:q
:x儲存並退出;
:w/path/to/somefile儲存到指定檔案
命令模式游標跳轉
游標跳**
字元間跳轉
h:左j:下
k:上l:右
現在直接上下左右鍵
#command:跳轉由#指定的個數的字元;
單詞間跳轉
w:下乙個單詞的詞首;
e:當前或後乙個單詞的詞尾;
b:當前或前乙個單詞的詞首;
#command:跳轉由#指定的個數的單詞;
行首行尾跳轉
^:跳轉至行首的第乙個非空白字元;
0:跳轉至行首;
$:跳轉至行尾;
行間跳轉
#g:跳轉至由#指定的行;
1g, gg:第一行;
g:最後一行;
句間跳**
) 下一句
( 上一句
段間跳轉
} 下一段
{ 上一段
翻屏:ctrl+f:向檔案尾翻一屏
ctrl+b:向檔案首部翻一屏
ctrl+d:向檔案尾部翻半屏
ctrl+u:向檔案首部翻半屏
enter:按行向後翻
當前頁跳**
h:頁首
m:頁中間行
l:頁底
zt:將游標所在當前行移到螢幕頂端
zz:將游標所在當前行移到螢幕中間
zb:將游標所在當前行移到螢幕底端
預設模式
x:刪除游標所在處的字元;
#x:刪除游標所在處起始的#個字元;
xp:交換游標所在處的字元與其後面的字元的位置;
替換命令(replace):
r:替換游標所在處的字元;
rchar
~:大小寫切換
刪除命令:
編輯模式刪除
d:刪除命令,可結合游標跳轉字元,實現範圍刪除;
d$:刪除游標所在位置到行尾的字元;
d^:刪除游標所在位置到非空行首的字元;
d0:刪除游標所在位置到行首的字元;
dw:刪除游標所在位置到下個單詞詞首的字元
de:刪除游標所在位置到當前單詞或下個單詞詞尾的字元
#command:
d:等同於d$
dd:刪除游標所在處的行;
#dd:刪除游標所處的行起始的共#行;
貼上命令(p, put, paste):
編輯模式貼上
p:緩衝區中的內容如果為整行,則貼上在當前游標所在行的下方;否則,則貼上至當前游標所在處的後方;
p:緩衝區中的內容如果為整行,則貼上在當前游標所在行的上方;否則,則貼上至當前游標所在處的前方;
複製命令(yank, y):
編輯模式複製
y:複製,工作行為相似於d命令;
y$:複製游標所在位置到行尾的字元
y^:複製游標所在位置到非空行首的字元
y0:複製游標所在位置到行首的字元
ye:複製標所在位置到當前單詞或下個單詞詞尾的字元
yw:複製游標所在位置到下個單詞詞首的字元
#command
yy:複製一整行
#yy:複製#行
改變命令(change, c):
編輯模式 --> 輸入模式,實現刪除操作;
c$:刪除游標所在位置到行尾的字元並且切換為輸入模式;
c^:刪除游標所在位置到非空行首的字元並且切換為輸入模式;
c0:刪除游標所在位置到行首的字元並且切換為輸入模式;
ce:刪除游標所在位置到當前單詞或下個單詞詞尾的字元並且切換為輸入模式;
cw:刪除游標所在位置到下個單詞詞首的字元並且切換為輸入模式;
#command
cc:刪除游標所在的行,並且切換為輸入模式;
#cc:刪除#行並且切換為輸入模式;
視覺化模式:
選定字元
v:按字元選定;
v:按行選定;
撤銷(undo)操作:
u:撤銷此前的操作;
#u:撤銷此前的#個操作;
撤銷此前的撤銷:
ctrl+r
vim自帶的練習教程:vimtutor
vim末行模式:
內建的命令列介面
(1) 位址定界
:start_pos[,end_pos]
#:特定的第#行,例如5即第5行;
.:當前行;
$:最後一行;
#,#:指定行範圍,左側為起始行,右側為結束行;
#,+#:指定行範圍,左側為超始行絕對編號,右側為相對左側行號的偏移量;例如:3,+7
.,$-1:範圍為當前行指倒數第二行
1,$:範圍為第一行至最後一行
%:全文
/pattern/:從游標所在處起始向檔案尾部第一次被模式所匹配到的行;
/first/,$:從游標所在處起始,第一次由pat1匹配到的行開始,至最後一行中間的所有行
/pat1/,/pat2/:從游標所在處起始,第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行;
d:位址定界後接d實現刪除該定界範圍內的行
y:位址定界後接d實現複製該定界範圍內的行
c:位址定界後接d實現替換該定界範圍內的行並且切換為輸入模式
w /path/to/somefile:將範圍內的文字儲存至指定的檔案中;
r /path/from/somefile:將指定的檔案中的文字讀取並插入至指定位置;
(2) 查詢
模式匹配查詢
/pattern:從當前游標所在處向檔案尾部查詢能夠被當前模式匹配的所有字串;
?pattern:從當前游標所在處向檔案首部查詢能夠被當前模式匹配到的所有字串;
n:下乙個,與命令方向相同;
n:上乙個,與命令方向相反;
(3) 查詢並替換
s:末行模式的命令;
使用格式:
s/要查詢的內容/替換為的內容/修飾符
要查詢的內容:可使用正規表示式;
替換為的內容:不能使用正規表示式,但可以引用;
如果「要查詢的內容」部分在模式中使用分組符號:在「替換為的內容」中使用後向引用;
直接引用查詢模式匹配到的全部文字,要使用&符號;
修飾符:
i:忽略大小寫;
g:全域性替換,意味著一行中如果匹配到多次,則均替換;
可把分隔符替換為其它非常用字元:
s@@@
s###
示例:%s@@t1@g
%s@@&er@g
vim的多檔案功能:
多檔案:
vimfile1file2...
在檔案間切換:
:next下乙個
:prev上乙個
:first第乙個
:last最後乙個
退出所有檔案:
:wqall儲存所有檔案並退出;
:wall
:qall
多視窗:
視窗分割
-o:水平分割視窗
-o:垂直分割視窗
在視窗間切換:ctrl+w, arrow
注意:單個檔案也可以分割為多個視窗進行檢視:
ctrl+w, s:水平分割視窗
ctrl+w, v:垂直分割視窗
定製vim的工作特性:
注意:在末行模式下的設定,僅對當前vim程序有效;
永久有效:
全域性:/etc/vimrc
使用者個人:~/.vimrc
1、行號
顯示:setnumber, 簡寫為setnu
取消顯示:setnomber,setnonu
2、括號匹配高亮
匹配:setshowmatch,setsm
取消:setnosm
3、自動縮排
啟用:setai
禁用:setnoai
4、高亮搜尋
啟用:sethlsearch
禁用:setnohlsearch
5、語法高亮
啟用:syntaxon
禁用:syntaxoff
6、忽略字元大小寫
啟用:setic
禁用:setnoic
獲取幫助:
:help
:helpsubject
【轉至 馬哥linux運維】
vim剪下指定行 Vim複製剪下貼上設定行號等技巧
問題描述 vim 中選中指定字元,進行複製,剪下,貼上以及設定行號。解決方法 進入vim中visual模式,visual模式進入,可以有三種方式 1 在普通模式 normal 下,直接按鍵 v 就可以進入預設visual模式,可以使用v j k h l 進行文字選擇 普通可視 注 使用normal模...
vim 跳轉到某一行
一般跳轉到某一行可以先輸入 然後在命令列中輸入行號然後按回車 123 命令列模式 或者 123g 非命令列模式 可以利用以下命令將回車鍵對映為g,這樣可以在非命令列模式下面使用123就能跳轉到123行,相對於g來說要方便不少。nnoremap g 如果沒有進行這種對映,123g在命令列模式下的含義是...
vim指定一行的字數
set formatoptions tcqmm set tw 78 gggqg 詳解 選項formatoptions確定了跟文字格式化有關的基本選項,常用的數值 有 t 根據textwidth自動折行 c 在 程式源 中的 注釋中自動折行,插入合適的注釋起始字元 r 插入模式下在注釋中鍵入回車時,插...