一、Vim是什麼
Vim是一個高度可配置的文本編輯器,用於創建和更改任何類型的文本非常高效。與大多數UNIX系統和Apple OS X一起,它被包含爲“vi”。Vim是穩定的,並且不斷髮展,變得更好。其特點是:持久的多級撤消樹;廣泛的插件系統;支持數百種編程語言和文件格式;強大的搜索和替換;與許多工具集成。
Vim是Vi IMproved,是編輯器Vi的一個加強版,一個極其強大並符合IT工程師(程序員、運維)習慣的編輯器。如果你是一名職業的SE,那麼一定在尋找一款出色的能夠自由定製、滿足靈活編輯功能的編輯器。那麼答案,就是vim或者Emacs。vim最大特色是完全使用鍵盤命令進行編輯,脫離了鼠標操作雖然使得入門變得困難,但上手之後鍵盤的各種巧妙組合操作卻能帶來極爲大幅的效率提升。
在Linux系統中,RHEL和CentOS的配置文件是/etc/vimrc,Debian和Ubuntu的配置文件是/usr/share/vim/vimrc。
那麼vimRC中的RC是什麼意思?
一般在運行某個軟件、環境或工具之初,要初始執行的一些命令,稱爲Run Commands,即RC。根據Wikipedia.org的記載,RC縮寫的用法源自MIT的相容分時操作系統(Compatible Time-Sharing System,CTSS)[參考1],有興趣的話請自行了解。
二、三種基本模式
基本上vi/vim可以分爲三種狀態,分別是普通模式、插入模式和命令模式,各模式的功能區分如下:
1、普通模式
控制屏幕光標的移動,字符、字或行的刪除,移動複製某區段。
2、插入模式
只有在插入下,纔可以做文字輸入、刪除,按「ESC」鍵可回到普通模式。
可以按i、I、a、A、o、O、r、R即可。其中i和I表示插入(Insert),r和R表示替換(replace)。
3、命令模式
將文件保存或退出vim,也可以設置編輯環境,如尋找字符串、列出行號等……
可以按“:”、“/”、“?”。其中“:”表示輸入vim命令,“/”表示後面輸入要向下搜索的字符串,“?”表示後面輸入要向上搜索字符串。
其實,可以把普通模式理解爲常態,進入其它任何一種模式,需要某種特殊方式,而從其它特殊模式回到普通模式,就按「ESC」鍵即可。
Vim的三種基本模式如下圖:
三、vim最常用的配置
爲了使以下參數永久有效,那你可以把以下參數寫進/etc/vimrc配置文件裏,當然,有一些參數已經存在配置文件中了。
1、顏色設置
syntax on 開啓代碼高亮
syntax off 關閉代碼高亮
syntax enable 開啓代碼高亮
2、搜索設置
set hlsearch --開啓搜索高亮
set nohlsearch --關閉搜索高亮
set incsearch --輸入搜索字符串的同時進行搜索
set ignorecase --搜索時忽略大小寫
3、用戶界面
set ruler --開啓光標位置提示
set number --顯示行號
set nonu --不顯示行號
set cmdheight=1 --命令部分高度爲1
4、編輯輔助配置
set autoindent --自動縮進
set noautoindent --不自動縮進
set smartindent --智能縮進
set autoread --當文件在外部被改變時,vim自動更新載入
set showmatch --顯示匹配的括號
四、常用的狀態切換按鍵
1、普通模式 → 插入模式
i 小寫字母i, 在光標位置插入
a 小寫字母a, 在光標的下一個位置插入
I 大寫字母I, 在光標所在行的第一個非空格處插入
A 大寫字母A, 在光標所在行的最後一個字符處插入
o 小寫字母o, 在光標所在行的下一行處插入新行
O 大寫字母O, 在光標所在行的上一行處插入新航
r 小寫字母r, 替換光標所在處的字符一次
R 大寫字母R, 持續替換光標所在處的字符,直到按下「ESC」鍵
2、普通模式 → 命令模式
:w 保存文件
:w! 強制保存文件(前提是用戶有修改文件訪問權限的權限)
:q 退出緩衝區
:q! 強制退出緩衝區而不保存
:wq 保存文件並退出緩衝區
:wq! 強制保存文件並退出緩衝區(前提是用戶有修改文件訪問權限的權限)
:w [filename] 另存爲名爲filename文件
:r [filename] 將另外一個文件讀入到正在編輯的文件
:n1,n2 w [filename] 將n1行到n2行的數據另存爲名爲filename文件
:x 保存並退出
ZZ 保存並退出
ZQ 不保存退出
3、插入模式 → 視圖模式
按下「ESC」鍵
4、命令模式 → 視圖模式
按下「ESC」鍵
五、常用的光標移動按鍵
1、光標字符操作
h 向左箭頭鍵(←) 光標向左移動一個字符
l 向右箭頭鍵(→) 光標向右移動一個字符
j 向下箭頭鍵(↓) 光標向下移動一個字符
k 向上箭頭鍵(↑) 光標向上移動一個字符
$ 光標移動到行尾(End),注意要按「Shift」鍵
0 光標移動到行首(Home)
^ 光標移動到行首第一個非空白字符(Home),注意要按「Shift」鍵
2、光標詞操作
w 光標移動到後一詞的詞首
W 光標移動到後一詞的詞首且忽略標點符號
e 光標移動到後一詞的詞尾
E 光標移動到後一詞的詞尾且忽略標點符號
b 光標移動到前一詞的詞首
B 光標移動到前一詞的詞首且忽略標點符號
3、光標行操作
G 光標移動到文件的最後一行的第一個非空白字符
nG/ngg 光標移動到文件的第n行,相當於”:n”
gg 光標移動到文件的第1行的第一個非空白字符
4、光標頁操作
Ctrl + f 向下翻頁(Pagedown)
Ctrl + b 向上翻頁(Pageup)
Ctrl + d 向下翻半頁
Ctrl + u 向上翻半頁
「H」 光標移動到目前顯示頁的第一行
「M」 光標移動到目前顯示頁的中間行
「L」 光標移動到目前顯示頁的最後一行
5、光標自由操作
Ctrl + o 回到光標的上一位置
六、常用編輯操作按鍵
1、刪除操作(delete)
dd 刪除光標所在行
ndd 刪除從光標所在行開始,向下的n行
d1G 刪除從光標所在行開始,到第一行的所有行
dG 刪除從光標所在行開始,到最後一行的所有行
d$ 刪除從光標所在位置,到行尾的所有字符
d0 刪除從光標所在位置,到行首的所有字符
x 每按一次,刪除光標所在位置的“後面”一個字符。
nx 刪除光標所在位置的“後面”n個字符。
X 大寫的X,每按一次,刪除光標所在位置的“前面”一個字符。
nX 刪除光標所在位置的“前面”n個字符。
2、複製操作(yank)
yy 複製光標所在行
nyy 複製從光標所在行開始,向下的n行
y1G 複製從光標所在行開始,到第一行的所有行
yG 複製從光標所在行開始,到最後一行的所有行
y$ 複製從光標所在位置,到行尾的所有字符
y0 複製從光標所在位置,到行首的所有字符
J 將光標所在行與下一行合併成一行
yw 複製當前光標所在的字母到該單詞的最後一個字母
yaw 複製當前光標所在的單詞
3、粘貼操作(paste)
p 小寫字母p,粘貼剪貼板中的數據,從光標所在行的下一行開始
P 大寫字母P,粘貼剪貼板中的數據,從光標所在行的上一行開始~~
4、撤銷與重做操作(undo)
u 撤銷上一個操作
5、重複操作
. 重複上一操作
6、替換操作(replace)
r 替換光標所在處字符
R 進入替換模式,直至按ESC退出
cc 替換光標所在行
cw 替換光標所在的英文單詞
~ 轉換大小寫
:n1,n2s/old/new/g 從n1到n2行將old替換成new,g表示全部替換
:1,$s/old/new/g 將整個文件的old替換成new
:1,$s/old/new/gc c表示確認
new (y/n/a/q/l/^E/^Y)? 表示如下:
y: 替換當前內容
n: 不替換
a: 替換所有
q: 退出
l: 替換當前內容,並退出
Ctrl + e:向後查找
Ctrl + y:向前查找
7、排版操作
:le 光標所在行左對齊
:ri 光標所在行右對齊
:ce 光標所在行居中
8、查看歷史
:history 顯示最近在vim裏面輸入的歷史
七、常用的搜索快捷鍵
1、搜索字符串
/string 向下搜索字符串“string”
?string 向上搜索字符串“string”
2、重複上次搜索
n 根據上次搜索條件找到下一個匹配的字符串
N 根據上次搜索條件找到上一個匹配的字符串
八、常用多緩衝區操作按鍵
1、單一緩衝區打開多個文件
:files 顯示目前打開了哪些文件
:n 切換到下一個緩衝區內容
:N 切換到上一個緩衝區內容
:2n 切換到下下個緩衝區內容
:bn 下一個緩衝區內容(buffer next)
:bp 上一個緩衝區內容(buffer previous)
2、多個緩衝區打開多個文件
:sp [filename] 打開一個新的緩衝區,如果有filename則內容爲該文件,否則爲當前文件
Ctrl+w n 新建一個緩衝區
Ctrl+w q 退出光標所在的緩衝區
Ctrl+w j 光標移動到下一緩衝區
Ctrl+w k 光標移動到上一緩衝區
Ctrl+w l 光標移動到右一緩衝區
Ctrl+w h 光標移動到左一緩衝區
Ctrl+w v 左右切割窗口新建緩衝區
Ctrl+w s 上下切割窗口新建緩衝區
Ctrl+w o 使光標所在緩衝區最大化,其他緩衝區隱藏
九、關於加密
1、加密文本文件
當你用vim打開或新建一個文件時,如果加上-x參數,即:
#
vim -x test.txt --打開你要加密的文本文件
那麼vim會提示你:
Enter entryption key:
當你輸入了密碼後,vim會提示你重複輸入以確認:
Enter same key again:
當你在設置密碼的時候,是以*
來顯示的,非明文。打開文件之後,:wq保存退出,密碼才生效。
當下次有人(包括你自己)打開該文件的時候,vim就會提示:
Enter encryption key:
這時你只要輸入你之前所設置的密碼就可以了。如果你輸入的密碼是錯誤的,vim並不會提示你密碼錯誤,而是顯示一堆無意義的垃圾代碼。
2、解除加密與重設密碼
打開你已經加密的文件,然後輸入:
#
vim test.txt --打開加密文件之後,輸入下面內容
:set key=
這樣,你的密碼就被設置爲空了,今後進入就不再需要輸入密碼了。而如果你向重設密碼的話,你可以輸入:
:X
注意是個大寫字母X。這時vim會提示你,只要反覆輸入兩次新的密碼就可以了:
Enter entryption key:
*****
Enter sanme key again:*****
如果是清除密碼,連續敲兩次鍵盤就可以了
注意:
加密、解除密碼、重設密碼之後,一定要保存之後才能生效。
如果密碼輸入錯誤,vim不會拒絕訪問者編輯文件。在這種顯示亂碼的情況下編輯文件並保存,整個文件就會變得混亂不堪,無法辨識。今後即使使用正確的密碼打開文件,也看不到正確的文檔了。
最後,附一張Vim使用總結圖