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





