作者:良知猶存
轉(zhuǎn)載授權(quán)以及圍觀:歡迎添加微信公眾號:羽林君
一:初識VI/VIM
剛開始用 VIM 打開文件的時(shí)候,需要從宏觀的去了解一下 VIM 這個(gè)編輯器。VIM 有四個(gè)模式:
- 正常模式 (Normal-mode)
- 插入模式 (Insert-mode)
- 命令模式 (Command-mode)
- 可視模式 (Visual-mode)
正常模式:
啟動(dòng)vim后默認(rèn)處于正常模式。不論位于什么模式,按下
插入模式:
在正常模式中按下i, I, a, A等鍵,會(huì)進(jìn)入插入模式?,F(xiàn)在只用記住按i鍵會(huì)進(jìn)行插入模式。在插入模式中,擊鍵時(shí)會(huì)寫入相應(yīng)的字符。
命令模式:
在正常模式中,按下:(英文冒號)鍵,會(huì)進(jìn)入命令模式。在命令模式中可以執(zhí)行一些輸入并執(zhí)行一些vim或插件提供的指令,就像在shell里一樣。這些指令包括設(shè)置環(huán)境、文件操作、調(diào)用某個(gè)功能等等。
常用的命令有:q(退出)、q!(強(qiáng)制退出)、w(保存)、wq(保存并退出)。
可視模式:
在正常模式中按下v, V,
注:vimrc是vim的配置文件,可以修改兩個(gè)位置,通過修改vimrc改變vim的配置
1./etc/vim/vimrc?2.~/.vimrc?~/.vimrc優(yōu)先級高
二:命令模式下的快捷操作
單鍵操作:Y y 拷貝 P p復(fù)制E e 跳轉(zhuǎn)字符?CTRL E CTRL YCTRL F CTRL B?CTRL V 進(jìn)行復(fù)制CTRL N 智能補(bǔ)碼?X x刪除 S s 刪除
L 屏幕末尾H屏幕初始
/? ?? 搜索
N n下一個(gè)
J合并兩行I 插入模式?Esc編輯模式和命令模式| 行首 ?鍵盤上END 行尾< >反縮進(jìn) 縮進(jìn)U u撤銷O o換行??組合按鍵操作:
1.全選并復(fù)制(區(qū)分大小寫?。。。?/span>
- 全部刪除:
按esc鍵后,先按gg(到達(dá)頂部),然后dG
- 全部復(fù)制:
按esc鍵后,先按gg,然后ggyG
- 全選高亮顯示:
按esc鍵后,先按gg,然后ggvG或者ggVG
- 單行復(fù)制:
按esc鍵后,然后yy
- 單行刪除:
按esc鍵后,然后dd
- 粘貼:
按esc鍵后,然后p
:set viminfo='1000,<500
至于為什么要輸入輸入’1000,這個(gè)其實(shí)不重要,最主要的是輸入<500,它是設(shè)置寄存器保存的行數(shù)的,即最大值為500。?
ggVG*y
解釋一下上面的命令:ggVG?? ——全選*y??—— 復(fù)制到剪貼板gg是光標(biāo)定位到文件首行V是進(jìn)入可視模式G是跳轉(zhuǎn)到文件最后一行這個(gè)時(shí)候你就將文本全選了然后使用*y來復(fù)制到剪切板上也可以通過配置使用y直接復(fù)制到剪切板?
?注意:這些命令需在輸入模式下執(zhí)行0
1、set shiftwidth=4(設(shè)定自動(dòng)縮進(jìn)為4個(gè)字符,底行模式下)
2、gg=G(自動(dòng)格式化全部代碼)
3、mG=nG(自動(dòng)格式化第m到第n行)
4、==(格式化當(dāng)前行)
2.跳轉(zhuǎn)行
比如想跳轉(zhuǎn)到文本的第12行,可以執(zhí)行如下命令:?
1、12gg / 12G
2、:12
3、打開文件時(shí)輸入vim 12 filename
?3.高亮方法:
用vim時(shí),想高亮顯示一個(gè)單詞并查找的方法,將光標(biāo)移動(dòng)到所找單詞.1: shift "*" ?向下查找并高亮顯示2: shift "#" ?向上查找并高亮顯示3: "g" "d" ??高亮顯示光標(biāo)所屬單詞,"n" 查找!
4.取消高亮的方法:使用vim的高亮搜索功能之后,如果不取消的話,代碼中就會(huì)有像補(bǔ)丁一樣的一塊一塊的高亮。之前用的方法很土,就是找一個(gè)再重新搜索一個(gè)很少用到的字符,萬一不幸,在源碼中存在的話,那就換下一個(gè),這樣一直換下去。后來覺得這樣不行,太low了,網(wǎng)上搜了一下,很簡單,在命令狀態(tài)下直接輸入:
:noh
?5.分屏操作:?1>.開啟分屏
1、使用大寫的O參數(shù)來垂直分屏?vim?-On?file1?file2?...
2、使用小寫的o參數(shù)來水平分屏?vim?-on?file1?file2?...
2>.關(guān)閉分屏
1. 關(guān)閉當(dāng)前窗口。Ctrl W c
2. 關(guān)閉當(dāng)前窗口,如果只剩最后一個(gè)了,則退出Vim。Ctrl W q
3>.分屏細(xì)節(jié)
(1)上下分割當(dāng)前打開的文件。Ctrl W s
(2)上下分割,并打開一個(gè)新的文件。:sp filename
(3)?左右分割當(dāng)前打開的文件。Ctrl W v
(4)?左右分割,并打開一個(gè)新的文件。:vsp filename
4>.移動(dòng)光標(biāo)Vi中的光標(biāo)鍵是h, j, k, l,要在各個(gè)屏間切換,只需要先按一下Ctrl W(1)把光標(biāo)移到右邊的屏。
Ctrl W l
(2)?把光標(biāo)移到左邊的屏中。Ctrl W h
(3)??把光標(biāo)移到上邊的屏中。Ctrl W k
(4)把光標(biāo)移到下邊的屏中。Ctrl W j
(5)?把光標(biāo)移到下一個(gè)的屏中。.Ctrl W w
5>.移動(dòng)分屏這個(gè)功能還是使用了Vim的光標(biāo)鍵,只不過都是大寫。當(dāng)然了,如果你的分屏很亂很復(fù)雜的話,這個(gè)功能可能會(huì)出現(xiàn)一些非常奇怪的癥狀。(1)??向右移動(dòng)。Ctrl W L
(2)?向左移動(dòng)Ctrl W H
(3)?向上移動(dòng)Ctrl W K
(4)向下移動(dòng)Ctrl W J
6>.屏幕尺寸
下面是改變尺寸的一些操作,主要是高度,對于寬度你可以使用[Ctrl W <]或是[Ctrl W >],但這可能需要最新的版本才支持。(1)?讓所有的屏都有一樣的高度。Ctrl W =
(2)?增加高度。Ctrl W
(3)減少高度。Ctrl W -
??6.跳轉(zhuǎn)實(shí)現(xiàn):[ ctrl i 跳轉(zhuǎn)到函數(shù)、變量和#define 用ctrl o 返回
[ ctrl d 跳轉(zhuǎn)到#define處用ctrl o 返回
ctrl i 向前跳到前幾次光標(biāo)位置
ctrl o 向后跳到后幾次光標(biāo)位置
(1)函數(shù)體跳轉(zhuǎn):
[[
]]
[]
][
{}
?(2)括號跳轉(zhuǎn)小括號的跳轉(zhuǎn):跳到句子的下頭,句子以句號或者空行結(jié)束,英文中的句號為 “.”。?
( (左小括號) 移到這個(gè)句子的開頭
) (左小括號) 移到下一個(gè)句子的開頭
中括號的跳轉(zhuǎn):跳到函數(shù)的開頭或者結(jié)尾。?
[[ 跳往上一個(gè)函式的起始大括號
]] 跳往下一個(gè)函式的起始大括號
[] 跳往上一個(gè)函數(shù)的結(jié)束大括號
][ 跳往下一個(gè)函數(shù)的結(jié)束大括號
大括號的跳轉(zhuǎn):跳到段落的開頭,段落以空行劃分
{ (左大括號) 跳到上一段的開頭
} (右大括號) 跳到下一段的的開頭
三:快捷鍵高清示意圖
由于發(fā)表文章會(huì)令圖片像素降低,大家可以后臺(tái)回復(fù)vim快捷鍵獲得相應(yīng)的高清圖。??
?
?這就是我分享的vi/vim快捷鍵,如果大家有什么更好的思路,歡迎分享交流哈。