vim 可視化的文本編輯工具、文本編輯指令
何謂文本:
純ASCII碼:數字、字母、特殊字元,128種,用7位二進制表達,美國國家标準協會所規定,8位
Unicode碼:國際通用的,UTF-8,将全球的通用字元用16位2進制表示,40多億種變化
vi improved,可視化,文法着色,文法檢測,文法比對
vi 應用于嵌入式環境中
CentOS系統之上,vi和vim實作或許相同
1
2
3
4
<code># ls -l `which vi`</code>
<code>-rwxr-xr-x 1 root root 910136 Dec 22 01:00 </code><code>/usr/bin/vi</code>
<code># ls -l `which vim`</code>
<code>-rwxr-xr-x 1 root root 2289640 Dec 22 01:00 </code><code>/usr/bin/vim</code>
vim有不同的模式:指令模式、編輯模式、未行模式
在不同的模式中,鍵入每個字元的含義都不相同
<code># useradd myuser 添加myuser使用者</code>
<code># install -m 640 -o myuser -g myuser /etc/fstab /tmp/fstab.tmp 複制檔案</code>
指令模式中:dd表示删除整行
進入指令模式
<code># vim /tmp/fstab.tmp</code>
指令模式中:光标移動至UUID行,
直接輸入 dd,UUID行被删除。
<a href="https://s1.51cto.com/wyfs02/M00/9D/95/wKiom1mChLKg1JHYAAAgipFrRLw778.png" target="_blank"></a>
編輯模式中:dd表示輸入dd字元
按I鍵
<a href="https://s3.51cto.com/wyfs02/M01/9D/95/wKioL1mChcqjJYy3AAARcWB70js095.png" target="_blank"></a>
進入編輯模式,可以看到“左下腳的 --INSERT-- 字元,代表進入編輯模式”
此時輸入dd, 在光标所在處前 出現dd字元
<a href="https://s4.51cto.com/wyfs02/M00/9D/95/wKiom1mChlWTaU6OAABQkOns10w341.png-wh_500x0-wm_3-wmp_4-s_190995372.png" target="_blank"></a>
vim的模式介紹 (觀察左下腳的字元) 指令模式 輸入模式 末行模式: vim内置的指令行接口,類似bash一樣的指令行接口(跟核心互動),同樣可以輸入指令
指令模式: vim 指令執行後自動進入指令模式,左下腳一般為vim指令作用的對象
編輯模式: 輸入特定的機鍵後,即能進入編輯模式(A,I,O,a,i,o)
<a href="https://s5.51cto.com/wyfs02/M00/9D/95/wKiom1mCh3rzH6ZGAABdBJXxyLY260.png-wh_500x0-wm_3-wmp_4-s_1625928579.png" target="_blank"></a>
未行模式: 輸入 “:”即可進入
<a href="https://s1.51cto.com/wyfs02/M00/9D/95/wKioL1mCh4WjyGg0AABaMWhfWTM405.png-wh_500x0-wm_3-wmp_4-s_475513029.png" target="_blank"></a>
######################vim入門曲線陡峭,卻是讓你抛棄nano,喜新厭舊的最好的理由。因為它的确很好用....##############################
如何使用VIM
打開檔案
模式轉換
關閉檔案
跳轉、編輯、複制、粘貼、删除、替換、翻屏、
内置練習程式的使用
調整語言
未行模式
位址定界、查找、查找并替換
文本模式
單個檔案的指令及操作
多個檔案的指令及操作
文本分割符使用
工作特性
擷取幫助

利用vim指令打開檔案
5
6
7
8
9
<code>[root@izpo45bh60h6bsz ~]</code><code># type vim #外部指令</code>
<code>vim is </code><code>/usr/bin/vim</code>
<code>[root@izpo45bh60h6bsz ~]</code><code># vim --help #擷取幫助</code>
<code>VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 21 2016 17:00:20)</code>
<code> </code><code>vim [OPTIONS...] FILE....</code>
<code> </code>
<code> </code><code>OPTIONS:</code>
<code> </code><code>+ 打開檔案後,光标跳轉至行尾</code>
<code> </code><code>+</code><code>/PATTERN</code> <code>打開檔案後,光标跳轉至由模式比對到的字元的行的第一行。PATTERN基本的正規表達式字元和純文字字元組合</code>
模式間的切換
<code>[root@izpo45bh60h6bsz ~]</code><code># install -m 640 /etc/pam.d/system-auth-ac /tmp/</code>
<code>[root@izpo45bh60h6bsz ~]</code><code># cp /etc/pam.d/system-auth-ac /tmp/</code>
指令模式 ---> 編輯模式
i , Insert 在光标所在處之前輸入内容
a ,append 在光标所在處之後,進入編輯模式,即可輸入内容
o,open 在 光标所在行的下方新打開一行
I, 光标跳轉至行首,進入編輯模式
A, 光标跳轉至行尾,進入編輯模式
O, 在光标所在行的上方,新打開一行
c,chage
C 删除光标所在行,進入編輯模式
使用示例
輸入以上指令,完成切換模式
<a href="https://s5.51cto.com/wyfs02/M00/9D/96/wKioL1mCiguCbuSNAABt5mdtDqk243.png-wh_500x0-wm_3-wmp_4-s_3450493890.png" target="_blank"></a>
此時即可鍵入字元
<a href="https://s1.51cto.com/wyfs02/M00/9D/96/wKiom1mCi0_ScNcbAABxNp94So0207.png-wh_500x0-wm_3-wmp_4-s_3410449565.png" target="_blank"></a>
編輯模式 ---> 指令模式
ESC鍵即可退出編輯模式
使用示例:
處于編輯模式
<a href="https://s2.51cto.com/wyfs02/M02/9D/96/wKioL1mCjTfA5y_3AAAXmBmxTRA901.png-wh_500x0-wm_3-wmp_4-s_3244266852.png" target="_blank"></a>
按ESC鍵後
指令模式 ---> 未行模式
在指令模式中,輸入 ":" 即可進入未行模式
使用示例
處于指令模式中
<a href="https://s3.51cto.com/wyfs02/M01/9D/96/wKioL1mCjeKgeADuAAARw_ns50M246.png-wh_500x0-wm_3-wmp_4-s_2178733109.png" target="_blank"></a>
按 SHIFT +
<a href="https://s4.51cto.com/wyfs02/M02/9D/96/wKioL1mCjiixcQ2AAAAOSwutLwY846.png-wh_500x0-wm_3-wmp_4-s_2419933866.png" target="_blank"></a>
未行模式 ---> 指令模式
1、未行的指令接口中有字元時
1次esc ,不會立即進入指令模式,需要等待2s
2次esc ,立即進入指令模式
2、未行的指令接口中無字元時
1次esc,立即進入指令模式
退出文本檔案
在指令模式中 ZZ 大寫Z
在未行模式中
對未編輯過的檔案,q 退出
對編輯過的檔案
: q! 強制退出,丢棄做出的修改,直接退出
: wq 儲存退出
: x 儲存退出
: w /PATH/TO/SOMEFILE 注意:儲存的為目前檔案中的所有的内容。
光标跳轉
1)字元間跳轉
COMMAND:
h: 食指,光标向左移一位
j: 食指,光标向下移一行
k: 中指,光标向上移一行
l : 無名指,光标向右移一位
數字和COMMAND組合時,一次可以移動多位/行
例如:
2h 向左移2位,不算目前字元,移動2位,光标處于第2位
3j 向下移動3行,不算目前行的下面2行,光标處于第2行
2)單詞間跳轉
COMMAND:
w 光标跳轉至下個單詞詞首
e 光标跳轉至目前或下個單詞的詞尾
光标在非詞尾處,跳到目前詞尾
光标在詞尾處,跳到下個單詞的詞尾
b 光标跳轉至目前或上個單詞的詞首
光标在非詞首處,跳到目前詞首
光标在詞首處,跳到上個單詞的詞首
數字和COMMAND組合時,一次可以跳轉多個詞
例如:
2w 光标跳轉由2指定個數的單詞數,
3)行首或行尾跳轉
^ 跳轉至目前行的起始位置
$ 跳轉至目前行的結束位置
0 跳轉至行首起始的最後一個空白字元
如果沒有空白字元時,跳轉至絕對行首
TAB鍵,也算空白
4)行間移動
首行 1G,gg
未行 G
由#指定的行 #G
5)句間跳轉
[ 前一句 後一句 ]
6)段間跳轉
{前一段 後一段}
文本編輯
1)字元編輯
删除, x #x
替換, r #r
2)删除指令
删除不轉換為編輯模式: d,dd
删除轉換為編輯模式: c , cc
3)複制指令
y,yy
4)粘貼指令,p,P
緩沖區中為整行,粘貼為新行
緩沖區中非整行,粘貼為目前行
其他編輯操作
1)可視化
v 字元級别
V 行級别
2)撤消操作,50
u
3)撤消撤消操作
^r
4)重複執行上次執行的指令
.
5)指令曆史
翻屏操作
^f front 向下翻 一屏
^b back 向上翻 一屏
^d down 向下翻 半屏
^u up 向上翻 半屏
^表示 Ctrl 鍵

locale指令
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<code>1、忘記指令:指令補全</code>
<code># local + 2次TAB,補全清單</code>
<code>local</code> <code>locale localectl localedef </code>
<code>2、檢視指令的類型</code>
<code># type localectl ##檢視指令的類型,已被hash化</code>
<code>localectl is hashed (</code><code>/usr/bin/localectl</code><code>)</code>
<code># hash ##檢視hash表</code>
<code>hits </code><code>command</code>
<code> </code><code>2 </code><code>/usr/bin/localectl</code>
<code> </code><code>1 </code><code>/usr/bin/install</code>
<code> </code><code>1 </code><code>/usr/bin/cat</code>
<code> </code><code>6 </code><code>/usr/bin/vim</code>
<code># hash -d localectl ##清除指定指令的hash條目</code>
<code># hash ##确認hash表不存在此條目 </code>
<code># type localectl ##顯示指令的類型:外部指令</code>
<code>localectl is </code><code>/usr/bin/localectl</code>
<code>3、擷取幫助 </code>
<code>外部指令( </code><code>man</code> <code>cmd 、cmd --help )</code>
<code># localectl --help</code>
<code>localectl [OPTIONS...] COMMAND ... </code>
<code>查詢或更改系統區域和鍵盤設定。 ------引用有道 http:</code><code>//dict</code><code>.youdao.com/</code>
<code>Commands:</code>
<code> </code><code>status 顯示目前設定的語言環境</code>
<code> </code><code>set</code><code>-locale LOCALE... 設定系統語言環境</code>
<code> </code><code>list-locales 顯示已知的語言環境</code>
選項:
status
<code># localectl status</code>
<code> </code><code>System Locale: LANG=en_US.UTF-8 </code><code>##顯示目前語言環境國标,英文</code>
<code> </code><code>VC Keymap: us</code>
<code> </code><code>X11 Layout: us</code>
list-locales
<code># localectl list-locales</code>
<code>中文編碼格式:</code>
<code>zh_CN.gb18030</code>
<code>zh_CN.gb2312</code>
<code>zh_CN.gbk</code>
<code>zh_CN.utf8 16位 7000個漢字,</code>
<code>英文編碼:ASCII 8位 127=2^7</code>
<code>en_US.iso88591</code>
<code>en_US.iso885915</code>
<code>en_US.utf8</code>
set-locale LOCALE...
<code>1、設定為中文</code>
<code># localectl set-locale LANG="zh_CN.UTF-8"</code>
<code> </code><code>System Locale: LANG=zh_CN.UTF-8</code>
<code>2、設定為英文</code>
<code># localectl set-locale LANG="en_US.UTF-8"</code>
<code> </code><code>System Locale: LANG=en_US.UTF-8</code>
<code> </code>
<code>3、設定後重新開機終端或别起shell程序</code>
位址定界:文本操作時,可以指定哪些範圍内的文本資訊
格式start_pos,end_pos
# 具體第#行
#,# 從左側#表示起始,從右側#表示行結尾
#,+# 從左側#表示行起始,加上右側#表示的行數
#,-# 從左側#表示行起始,減去右側#表示的行數
. 目前行
$ 最後一行
.,$-1 目前行至倒數第二行
% 全文,相當于 1,$
/PATTERN1/,/PATTERN2/ 從第一次被pat1模式比對到的行開始,一直到第一次被pat2比對到的行結束,中間的所有行
#,/pat/ 具體第#行,到第一次被pat1模式比對到的行
/pat/,# 第一次被pat1模式比對到的行到,具體第#行
使用組合:
start_pos[,end_pos] 指令編輯操作符
d,y,p,w,r
查找
/PATTERN 從目前光标所在處向檔案尾部查找
正規表達式
. 任意單個字元
^ $
\(\)
\1,\2,...
?PATTERN 從目前光标所在處向檔案首部查找
同less指令
n 與指令同方向
N 與指令反方向
查找并替換:先查找,後替換
s: 在未行模式下完成查找替換操作
s/要查找的内容/要替換為的内容/修飾符
要查找的内容:PATTERN 基本正規表達式字元
替換的内容,可以用\1,\2, &引用前面查找到的所有的内容
修飾符:
i:忽略大小寫
g: 全局替換,沒有g,每一行隻替換第一次出現
同分割符,需要轉義, /
分割符可以替換為任意特殊字元
@#^&...
s@@@
s###
單個檔案的指令及操作
指令格式 vim [OPTIONS...] FILE
+ 打開檔案後,直接讓光标處于行尾
+/PATTERN 打開檔案後,直接讓光标處于第一次比對到模式的行
FILE 路徑必須存在,基名可以不存在
# vim #必須要指明儲存位置
視窗切割
Ctrl + w 松開 按
s split 水準分割
v vertical 垂直分割
多個檔案的指令及操作
視窗不分割模式
vim FILE ...
:next 下一個檔案
:prev 前一個檔案
:last 最後一個檔案
:first
:wall 儲存所有
:wqall 儲存退出所有
:wq 退出目前
例如:
vim /tmp/{functions,fstab,issue}
相當于:
vim /tmp/functions /tmp/fstab /tmp/issue
視窗分割模式
vim [OPTIONS...] FILE...
-o 水準分割
-O 垂直分割
視窗間切換
^w 松開後 按Arrow
Arrow: 箭頭
vim functions grub2.cfg
未行中定義:目前vim程序有效 ,重新打開vim程序無效
1)行号
顯示: set number 簡寫為 set nu
取消顯示 set nonumber 簡寫為 set nonu
2)括号比對
顯示 set showmatch 簡寫為 set sm
不顯示 set noshowmatch set nosm
3)自動縮進
啟動 set ai
不啟用 set noai
4)高亮搜尋:搜尋到的字串高亮顯示
啟用: set hlsearch
禁用: set nohlsearch
5)文法高亮(字元的顔色)
啟用 syntax on
禁用 syntax off
6)忽略字元的大小寫
啟用: set ic
不忽略: set noic 預設,linux區分字元大小寫
7)如何TAB鍵自動縮進為4個字母
set tabstop=4
永久有效
全局: /etc/vimrc
個人: ~/.vimrc
** 注意不用重讀配置檔案
更多VIM功能
1)vim中文手冊
2)未行指令接口:help [KEYWORD]
快捷鍵
:help help
本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1953252,如需轉載請自行聯系原作者