超全 vim 使用和配置
首先我們先理清楚一個概念:編輯器和編譯器和調(diào)試器!
-
??vim:是一款編輯器,只負(fù)責(zé)寫代碼;相當(dāng)于 windows 的記事本; -
??gcc:是一款編譯器,只負(fù)責(zé)程序的翻譯; -
??gdb:是一款調(diào)試器,只負(fù)責(zé)程序的調(diào)試
vim 的使用學(xué)習(xí)
vim 簡介
vim 是一個功能強(qiáng)大的多模式編輯器, 是 Linux/UNIX 上最常用的文本編輯器, 它的作用是建立、編輯、顯示文本文件。Vim 沒有菜單,只有命令。
-
??命令模式(默認(rèn)):輸入的任何內(nèi)容,都被當(dāng)做命令; -
??插入模式; -
??低行模式;
總結(jié):任何模式互相切換,都可以先 Esc 切換到命令模式!
命令模式下的常用命令
??插入命令
對于小寫的 aio:
-
a 代表在當(dāng)前光標(biāo)后插入; -
i 代表在當(dāng)前光標(biāo)前插入; -
o 在光標(biāo)下一行插入
對于大寫的 AIO:
-
A 代表在當(dāng)前光標(biāo)所在行的行尾插入; -
I 代表在當(dāng)前光標(biāo)所在行的行首插入; -
O 代表在當(dāng)前光標(biāo)所在行的上一行進(jìn)行插入;
?? 定位命令
-
首先 shift+: 進(jìn)入低行模式,然后輸入 set nu 就可以在前面加上行號,set nonu 就可以取消行號; -
GG 跳到最后一行的開頭,gg 回到第一行的開頭; -
跳到指定的行:nG 或者: n -
$ 移至到當(dāng)前光標(biāo)所在的行尾,0 移至到當(dāng)前光標(biāo)所在的行首
補(bǔ)充:b 往前找,w 往后找,并且每次跳過一個單詞;
補(bǔ)充:hjkl 對應(yīng)著左移、下移、上移、右移;也可以用上下左右鍵來移動;
補(bǔ)充:L 是移動到本界面的最后一行;
?? 刪除命令
-
x 刪除光標(biāo)所在處字符,每次刪除一個字符; -
nx 刪除光標(biāo)所在處后 n 個字符,nX 刪除光標(biāo)所在處前 n 個字符,n 是幾就刪除光標(biāo)后幾個字符; -
dd 刪除光標(biāo)所在的這一行; -
D 刪除光標(biāo)所在處到這一行的行尾位置; -
ndd 從光標(biāo)所在行算起,n 是幾就刪除后面的幾行; -
dG 刪除光標(biāo)所在的這一行到整個文件的末尾處; -
:n1,n2d 刪除指定范圍的行; -
u 如果誤刪除,可以利用 u 進(jìn)行回退恢復(fù),相當(dāng)于 windows 里的 ctrl+z 的作用;
補(bǔ)充:shift ~ 可以實現(xiàn)大小寫之間的轉(zhuǎn)換;
??復(fù)制和剪貼
yy ?復(fù)制當(dāng)前行,nyy ?復(fù)制當(dāng)前行以下 n 行;然后 p 就可以復(fù)制到當(dāng)前光標(biāo)處的下一行,P 復(fù)制到當(dāng)前光標(biāo)處的上一行;
dd ?剪切當(dāng)前行,ndd ?剪切當(dāng)前行以下 n 行;然后 p 就可以復(fù)制到當(dāng)前光標(biāo)處的下一行,P 復(fù)制到當(dāng)前光標(biāo)處的上一行;
??搜索和搜索替換命令
-
:%s/old/new ?全文替換指定字符串,%s 代表整個全文,把 old 字符串替換成 new 字符串; -
:n1,n2s/old/new/g ?全文替換指定字符串,n1 是起始行,n2 是終止行;把 old 字符串替換成 new 字符串;g 代表不詢問,也可以用 c 代表詢問; -
r ?取代光標(biāo)所在處的一個字符;后面在輸入相當(dāng)于在光標(biāo)處后面直接插入; -
R ?從光標(biāo)所在處開始替換字符,直到整個行被替換完,后面在輸入相當(dāng)于在光標(biāo)處后面直接插入,按 ESC 結(jié)束; -
u ?取消上一步操作
?? 保存和退出命令
-
:w! ?保存修改 -
:q! ?不保存修改退出 -
:wq! ? 保存修改并退出;或者用 x!,在或者用 ESC+shift+ZZ; -
:w 文件名;表示把當(dāng)前文件的內(nèi)容另存到指定文件里;相當(dāng)于備份;
vim 使用技巧
簡單技巧
??導(dǎo)入命令執(zhí)行結(jié)果到文件里 ?:r ! 命令
r:代表寫入;! 命令:表示命令執(zhí)行的結(jié)果,就相當(dāng)于我們在終端里直接輸入命令一樣 ??比如:我們正在編寫一個 111 文件 (vim 111),我們想要把當(dāng)前的時間寫入進(jìn)來;我們需要退出當(dāng)前編輯的文件,然后在終端輸入 date 命令,把結(jié)果復(fù)制,然后在 vim 111 進(jìn)入文件,進(jìn)行粘貼,想一想都麻煩!
??但是如果我們在當(dāng)前編輯的 111 文件內(nèi),直接執(zhí)行:r!date;就能把時間直接打印到當(dāng)前光標(biāo)處!
??連續(xù)行注釋
:n1,n2s/^/#/g
??對于 Linux 來說,注釋符是 #;這里和搜索替換的用法很相似,我們就先解讀一下:把 n1 起始行和 n2 終止行里面的內(nèi)容進(jìn)行注釋 (#);^(尖角號) 代表移到首行字符并進(jìn)入插入模式;# 是把注釋符 #插入進(jìn)去;g 代表不詢問;
:n1,n2s/^#//g
??表示把首行的注釋符 #取消掉;相當(dāng)于把首行的 #替換成空;
快捷鍵的定義
??定義快捷鍵 ?:map ?快捷鍵 觸發(fā)命令
例:我們想進(jìn)行注釋 (#):
-
1.按 0 移至首行 -
2.i 插入 -
3.# 注釋 -
4.退回到命令模式;
我們需要四步;但是如果我們自己定義快捷鍵呢?只需要一步!
:map?^P?I#
??我們利用 map 進(jìn)行快捷鍵的定義,^ 并不是 ctr+6,而是 ctrl+v+p;I 代表行首并進(jìn)入插入模式;# 代表插入的是 #;成功插入后退回到命令模式;
??這樣以后再注釋,直接 ctrl+p,就可以了,感興趣的小伙伴快快操作起來吧!
:map?^B?0x
??有了首行插入注釋符 #的快捷鍵,不妨在定義一個,刪除首字符的快捷鍵;0 代表移動到首行,x 表示刪除一個字符;
??以后想要直接刪除首行的第一個字符,直接 ctrl+b 就可以了;
??替換快捷鍵:ab
例:我們經(jīng)常要輸入自己的郵箱,但是每次那么長太麻煩了;所以我們不妨定義一個快捷鍵來代替我們的郵箱;這就需要 ab 命令;
:ab?mymail?1870298470@qq.com
??這樣我們在輸入郵箱直接輸 mymail 回車,就可以替換成 1870298470@qq.com,是不是很方便;
注意:對于我們當(dāng)前定義的快捷鍵都是臨時生效的,要想永久生效需保存在:文件.vimrc中
-
??對于root 用戶:寫入 / root/.vimrc 當(dāng)中 -
??對于普通用戶:寫入/home/username/.vimrc
簡單 vim 配置(重點)
首先讓大家看一下我的 vim 配置后的結(jié)果
?配置過后是不是有點像 VS 的環(huán)境?不妨打開自己的 vim 看看是不是這樣的效果!
基本配置
??所有的基本配置,本質(zhì)是將我們的配置項寫入. vimrc 當(dāng)中;對于普通用戶,我們直接 vim .vimrc 把配置文件寫進(jìn)去就行;例如一些簡單的配置:
也可以用別人的配置,我目前就用的別人的,更加全面!
>?curl?-sLf?https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh?-o?./install.sh?&&?bash?./install.sh?
直接在終端輸入,然后回車就可以啦!
??下載完成后還要?source ~/.bashrc
?讓配置生效
??卸載配置直接執(zhí)行:bash ~/.VimForCpp/uninstall.sh
鏈接:https://blog.csdn.net/m0_61933976/article/details/124653524
(版權(quán)歸原作者所有,侵刪)