玩转VIM编辑器-vim附加特性
玩轉(zhuǎn)VIM編輯器-vim附加特性
重復(fù)一個(gè)操作N次
對(duì)于我們前面介紹的一些操作,我們可以單純地加上一個(gè)數(shù)字,來重復(fù)操作N次,比如j表示下移一行,那么10j就是下移10行。
????? 還有一些重復(fù)執(zhí)行的命令:
| 重復(fù)命令 | 描述 |
| @@ | 重復(fù)前一個(gè)執(zhí)行的宏 |
| n | 向同樣的方向執(zhí)行搜索 |
| N | 向相反的方向執(zhí)行搜索 |
| . | 重復(fù)上一次的編輯命令 |
| @: | 重復(fù)上一次的命令行操作 |
撤銷和重復(fù)操作
單次撤銷,直接使用字母u即可,如果想撤銷N次操作,可以使用Nu;
撤銷全部操作,使用大寫字母U即可。
????? 如果使用了u撤銷操作,并且發(fā)現(xiàn)錯(cuò)誤了,可以使用:red或者CTRL+R來撤銷剛才做的編輯動(dòng)作。
打開光標(biāo)下對(duì)應(yīng)的文件
????? 這個(gè)特性對(duì)于下述所示的情況相當(dāng)有用。
l? 測(cè)試配置文件中所給的文件名是有效的;
l? 編輯一個(gè)文件的時(shí)候,想查看編輯文件中所包含的文件;
l? 在編輯源代碼的時(shí)候,參考include或者import的文件;
1.???? 直接打開:??? gf
2.???? 打開一個(gè)新的窗口: CTRL+W f
3.???? 打開一個(gè)新的選項(xiàng)卡:??? CTRL+W? gf
如果文件中所包含的文件并沒有給出絕對(duì)路徑,那么vim將在當(dāng)前目錄中搜索。
????? 在下述情況下,即使沒有指出絕對(duì)路徑,vim也能定位到文件的準(zhǔn)確位置:
1.??? C程序中的頭文件;
2.??? Perl程序中的Perl模塊
使用傳統(tǒng)方式編輯多個(gè)文件
????? 使用此種方法,可以在那一個(gè)vim會(huì)話中編譯多個(gè)文件。
打開方法為:vim file1 file2 file3
如果已經(jīng)處在vim編輯會(huì)話中,需要再打開一個(gè)文件,可以使用下述命令:
:e anotherfile
我們可以使用:ls來列出目前vim會(huì)話中的所有文件,比如:
:ls
? 1 %a?? "apue.h"?????????????????????? line 1
? 2 #??? "passwd"?????????????????????? line 1
? 3????? "lscpu"??????????????????????? line 1
那么我們可以使用:e #N來打開第N個(gè)文件;
在兩個(gè)文件中切換的方法為:? CTRL+^;
在多個(gè)文件中移動(dòng)的方法:
使用命令:next和:previous分別可以移動(dòng)到下一個(gè)文件或者上一個(gè)文件。
自動(dòng)保存文件
????? 如果在沒有保存文件的時(shí)候,想切換到另一個(gè)編輯文件,會(huì)出現(xiàn)警告信息,提示先保存信息,可以設(shè)置自動(dòng)保存選項(xiàng):set autowrite,這樣就可以直接切換各個(gè)文件或緩存。
????? 也可以使用:wall單個(gè)命令來寫入所有的文件。
Vim中加密文件
使用:X來加密文件,下次編輯時(shí)就需要輸入加密密碼;
解密方法為:set key=然后保存文件就可以了。
加 密 的 局 限 性
Vim 采用的加密算法有弱點(diǎn)的。它對(duì)于防止那種偷窺者是綽綽有余了,但不足以防止一個(gè)手上有大量時(shí)間的密碼專家。而且, 你應(yīng)該知道交換文件是不加密的;所以當(dāng)你在編輯文件時(shí),擁有超級(jí)用戶權(quán)限的人能夠讀取未經(jīng)加密的文件文本。不讓人們讀到你的交換文件的一個(gè)方法就是不使用交換文件。
:setlocal noswapfile
由于沒了交換文件,文件復(fù)原就不可能了。為了避免失去編輯的成果,要比平時(shí)更勤快地存盤你的文件。
保存和還原vim會(huì)話
????? 在我們編輯N個(gè)文件的時(shí)候,如果需要先做別的事情,在返回來編輯該會(huì)話,那么我們可以保存該會(huì)話,然后還原它,在這個(gè)過程中,諸如緩沖區(qū)、窗口大小、自定義選項(xiàng)、文件夾和當(dāng)前目錄等都會(huì)保存。
| 會(huì)話命令 | 描述 |
| :mksession | 在當(dāng)前目錄中創(chuàng)建一個(gè)默認(rèn)的Session.vim |
| :mksession filename | 保存會(huì)話為指定的文件名filename |
| $vim –S | 打開當(dāng)前目錄中默認(rèn)的會(huì)話 |
| $vim –S filename | 打開當(dāng)前目錄中指定的會(huì)話filename |
| :source Session.vim | 導(dǎo)入會(huì)話中的所有設(shè)置 |
在vim中執(zhí)行Unix腳本命令
????? 在vim中執(zhí)行Unix命令cmd,使用:!cmd即可。比如顯示:!date日期信息。
也可以將當(dāng)前文件名作為一個(gè)參數(shù)傳入到Unix命令中:
| :!echo % | %代表當(dāng)前文件名 |
| :!echo %:p | %:p代表當(dāng)前文件名的絕對(duì)路徑 |
| :!echo %:e | %:e代表當(dāng)前文件的擴(kuò)展名 |
使用vimdiff檢查文件中的異同
????? 在Unix中可以使用diff file1 file2來查看兩個(gè)文件的異同(完全命令終端顯示),但是vimdiff更加的直觀、友好(不同顏色來友好地顯示出文件異同)。
| vimdiff命令 | 描述 |
| vimdiff file1 file2或 vim -d file1 file2 | 在一個(gè)垂直分割窗口中顯示不同 |
| vimdiff –o file1 file2或 vim –d -o file1 file2 | 在一個(gè)水平分割窗口中顯示不同 |
| vim file1 :diffsplit file2 | 已經(jīng)打開了一個(gè)文件,在打開另一個(gè)文件來比較異同-水平分割 |
| vim file1 :vert diffsplit file2 | 已經(jīng)打開了一個(gè)文件,在打開另一個(gè)文件來比較異同-垂直分割 |
| [c | 跳轉(zhuǎn)到下一個(gè)修改處 |
| ]c | 跳轉(zhuǎn)到上一個(gè)修改處 |
vim映射命令
????? 如果需要重復(fù)地執(zhí)行一個(gè)命令,可以使用vim的映射命令來實(shí)現(xiàn)。
比如:map :write :!cc % && ./a.out該映射命令在執(zhí)行:write的時(shí)候就會(huì)編譯當(dāng)前文件并執(zhí)行。
????? 前面我們提到過:w 和:up的區(qū)別,可以使用map :w :up;還有:map :q :confirm q。
????? 使用:map可以顯示所有定義的映射。
讓bash shell工作的像vim編輯器
set -o vi 表示編輯命令行用 vi 模式,默認(rèn)狀態(tài)是 vi 的 編輯狀態(tài),可以輸入、修改,用 ESC 退出編輯狀態(tài)后,可以用 h,l 來前進(jìn)后退, j,k 來翻看歷史命令,^光標(biāo)到行首,$光標(biāo)至行尾,dd 刪除該行...等等,和 vi 的用法是一樣的。習(xí)慣用 vi 的人可以用 set -o vi 這種模式加快命令行編輯。
???? 此外,還有 set -o emacs,表示編輯命令行用 emacs 模式,不分編輯狀態(tài)和控制狀態(tài)。 可以直接輸入,也可以用 [CTRL]-a 至行首,[CTRL]-e 至行尾,[CTRL]-k 刪除光標(biāo)處到末尾...等等,這和 emacs 的編輯方式是一樣的。這是默認(rèn)模式,也是最常見和大多數(shù)人習(xí)慣的方式。
vim編輯器中的一些選項(xiàng)
| 選項(xiàng) | 描述 |
| :set nu | 顯示行號(hào) |
| :set ic | 搜索時(shí)忽略大小寫 |
| :set ro | 以只讀模式打開 |
| :set wm=n | 最右端回卷最大值 |
| :set ai | 開啟自動(dòng)縮排功能 |
| :set all | 顯示vim會(huì)話中的所有設(shè)置 |
| :set list | 顯示所有不可視字符,比如^|表示tab,$表示行尾 |
| :set hlsearch | 高亮顯示匹配模式 |
| :set incsearch | 開啟增量搜索模式,實(shí)時(shí)搜索 |
如果想關(guān)閉上述設(shè)置,可以使用:set no<OPTION>,例如不顯示行號(hào)為:set nonu。
默認(rèn)寄存器和它們的用法
| 寄存器名稱 | 描述 |
| % | 當(dāng)前文件的名稱 |
| # | 替換文件的名稱 |
| : | 最近一次執(zhí)行的命令 |
| / | 上一次的搜索模式 |
| “ | 上一次使用的寄存器 |
????? 從寄存器中粘貼內(nèi)容,執(zhí)行下述命令
“<寄存器名稱>p
比如如果“%p就會(huì)把當(dāng)前文件名給粘貼到光標(biāo)位置。
????? 關(guān)于寄存器,有以下幾點(diǎn)需要注意:
1.??? 數(shù)字表示的只有從0到9的10個(gè)寄存器;
2.??? 最近拷貝的存儲(chǔ)在寄存器0;
3.??? 最近刪除的存儲(chǔ)在寄存器1;
vim目錄操作
????? 我們可以使用vim作為一個(gè)文件管理器在文件系統(tǒng)中導(dǎo)航,并且可以進(jìn)行一些操作。
????? 比如使用vim /可以看到:
????? 在vim文件瀏覽器中,可以執(zhí)行下述操作:
| 鍵 | 描述 |
| <Enter> | 打開光標(biāo)對(duì)應(yīng)的文件或文件夾 |
| D | 刪除光標(biāo)對(duì)應(yīng)的文件 |
| R | 重命名光標(biāo)對(duì)應(yīng)的文件 |
| X | 執(zhí)行光標(biāo)對(duì)應(yīng)的文件 |
| o | 打開一個(gè)水平分割窗口 |
????? 也可以在vim編輯器件中打開vim文件瀏覽器:
| 鍵值 | 描述 |
| :Ex | 在vim文件瀏覽器打開當(dāng)前目錄 |
| :Ex /etc | 在vim文件瀏覽器打開指定目錄 |
| :Sex | 在vim文件瀏覽器使用水平分割窗口打開當(dāng)前目錄 |
| :Vex | 在vim文件瀏覽器使用垂直分割窗口打開當(dāng)前目錄 |
| :Tex | 在vim文件瀏覽器在一個(gè)新的選項(xiàng)卡中打開當(dāng)前目錄 |
?
轉(zhuǎn)載于:https://www.cnblogs.com/shaoguangleo/archive/2011/11/05/2806049.html
總結(jié)
以上是生活随笔為你收集整理的玩转VIM编辑器-vim附加特性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx - 配置
- 下一篇: 读书笔记—《销售铁军》随记7