\vi: Visual Interface
文本編輯器種類
- 行編輯器: sed
- 全屏編輯器: nano, vim
vim: vi improved
使用
vim: 模式化的編輯器
-
基本模式:
- 編輯模式
- 命令模式
- 輸入模式
-
打開文件 vim [options] files
- ** options **
- +#: 打開文件后柜与,直接讓光標(biāo)處于第#行的行首
- +/PATTERN: 打開文件后,直接讓光標(biāo)處于第一個(gè)被PATTERN匹配到的行的行首
- ** options **
-
模式轉(zhuǎn)換
-
編輯模式 --> 輸入模式
- i: insert, 在光標(biāo)所在處前面輸入
- a: append, 在光標(biāo)所在處的后面輸入
- o: 在當(dāng)前光標(biāo)所在行的下方插入一個(gè)新行
- I: 在當(dāng)前光標(biāo)所在的行首輸入
- A: 在當(dāng)前光標(biāo)所在行的行尾輸入
- O: 在當(dāng)前光標(biāo)所在行的上方插入一個(gè)新行
- c:
- C:
-
輸入模式 --> 編輯模式
- ESC
-
編輯模式 --> 命令模式
- :
-
命令模式 --> 編輯模式
- ESC
-
編輯模式 --> 輸入模式
-
光標(biāo)跳轉(zhuǎn)
-
子符間跳轉(zhuǎn):
- h, j, k, l
- h: 左
- j: 下
- k: 上
- l: 右
- #COMMAND: 跳轉(zhuǎn)由#指定的個(gè)數(shù)的字符
- h, j, k, l
-
單詞間跳轉(zhuǎn):
- w: 下一個(gè)單詞的詞首
- e: 當(dāng)前或下一個(gè)單詞的詞尾
- b: 當(dāng)前或前一個(gè)單詞的詞首
-
行首行尾跳轉(zhuǎn):
- ^: 跳轉(zhuǎn)到行首的第一個(gè)空白字符
- 0: 跳轉(zhuǎn)至行首
- $: 跳轉(zhuǎn)至行尾
-
行間移動(dòng):
- #G: 跳轉(zhuǎn)至由#指定行
- G: 最后一行
- 1G,gg: 第一行
-
句間移動(dòng)
- ): 往后移動(dòng)一句
- (: 往前移動(dòng)一句
-
段落間移動(dòng)
- }: 向后移動(dòng)一段
- {: 向前移動(dòng)一段
-
子符間跳轉(zhuǎn):
-
vim的編輯命令
-
字符編輯
- x: 刪除光標(biāo)處的字符
- #x: 刪除光標(biāo)處其實(shí)的第#個(gè)字符
xp 交換光標(biāo)所在處的字符及其后面字符的位置
-
替換命令(r,replace)
- r: 替換光標(biāo)所在處的字符
-
刪除命令
-
d: 刪除命令, 可結(jié)合光標(biāo)跳轉(zhuǎn)字符實(shí)現(xiàn)范圍刪除
- d$: 光標(biāo)一直到行尾的字符
- d^: 光標(biāo)一直到行首的字符
- d0:
- dw
- de
- db
#command
-
dd: 刪除光標(biāo)所在的行
- #dd: 多行刪除
D: 刪除光標(biāo)所在行的所有字符
-
-
粘貼命令(p, put, paste)
- p: 緩沖區(qū)存的如果為整行, 則粘貼在當(dāng)前光標(biāo)所在的行的下方; 否則, 則粘貼至當(dāng)前光標(biāo)所在處的后面
- P: 緩沖區(qū)存的如果為整行, 則粘貼在當(dāng)前光標(biāo)所在行的上方; 否則, 則粘貼至當(dāng)前光標(biāo)所在處的前面
-
復(fù)制命令(y, yank)
- y: 復(fù)制, 工作行為與d命令相似
- y$
- y0
- y^
- yw
- ye
- yb
#yy: 復(fù)制多行
- y: 復(fù)制, 工作行為與d命令相似
-
改變命令(c, change)
- c: 修改
* 編輯模式 --> 輸入模式- c$
- c^
- c0
- cb
- ce
- cw
- #command
- cc: 刪除并輸入新的內(nèi)容
- #cc
- c: 修改
-
可視化模式
- v: 按字符選定
- V: 按行選定
Note: 經(jīng)常結(jié)合編輯命令:d c y
-
撤銷此前的編輯:
- u(undo): 撤銷此前操作
- #u: 多次撤銷
- u(undo): 撤銷此前操作
撤銷此前的撤銷 Ctrl+r
重復(fù)前一個(gè)編輯操作"."
-
-
翻屏操作
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u: 向文件首部翻半屏
-
vim中的命令模式
- (1) 地址定界
- :start_pos,end_pos)
- #: 具體第#行, 例如2表示第2行
- #,#: 從左側(cè)#表示行起始, 到右側(cè)#表示行結(jié)尾
- #,+#: 從左側(cè)#表示的行起始, 到右側(cè)#+#表示行尾
- .: 當(dāng)前行
- $: 最后一行
- %: 全文, 相當(dāng)于1,$
- /PATTERN1/,/PATTERN2/: 從第一次被PATTERN1模式匹配到的行開始, 一直到被PATTERN2匹配到的行結(jié)束
- #,/PATTERN/
- /PATTERN/,$
-
使用方式
- 后跟一個(gè)編輯命令
- d
- y
- w /PATH/TO/SOMEWHERE: 將范圍內(nèi)的行另存至指定文件中
- r /PATH?FROM/SOMETHERE: 從指定位置插入指定文件中的所有內(nèi)容
- 后跟一個(gè)編輯命令
- :start_pos,end_pos)
- (2) 查找
- /PATTERN: 從當(dāng)前光標(biāo)所在處向文件尾部查找
- ?PATTERN: 從當(dāng)前光標(biāo)所在處向文件首部查找
- n: 與命令同方向
- N: 與命令反方向
- (3) 查找并替換
- s: 在命令模式下完成查找替換操作
- s/要查找的內(nèi)容/替換為的內(nèi)容/修飾符
- 要查找的內(nèi)容, 可使用模式
- 替換為的內(nèi)容, 不能使用模式, 但是可以使用\1,\2,\3....等后向引用符號(hào),還可以使用&引用前面查找時(shí)查找到的整個(gè)內(nèi)容
- 修飾符
- i: 忽略大小寫
- g: 全局替換 默認(rèn)情況下, 每行只替換第一次出現(xiàn)
Note: 查找替換中的分割符/可以替換為其他字符例如@,#,
- s/要查找的內(nèi)容/替換為的內(nèi)容/修飾符
- s: 在命令模式下完成查找替換操作
- (1) 地址定界
-
多文件模式
-
vim FILE1 FILE2 FILE3 ...
- :next 下一個(gè)
- :prev 前一個(gè)
- :first 第一個(gè)
- :last 最后一個(gè)
- :wall 保存所有
- :qall 退出所有
-
vim FILE1 FILE2 FILE3 ...
-
窗口分割模式
-
vim -o|-O FILE1 FILE2 ...
- -o: 水平分割
- -O: 垂直分割
在窗口間切換: Ctrl+w,arrow|h,j,k,l
-
單文件窗口分割:
- Ctrl+w,s: split, 水平分割
- Ctrl+w,v: vertical, 垂直分割
-
-
定制vim的工作特性:
-
配置文件: 永久有效
- 全局: /etc/vimrc
- 個(gè)人: ~/.vimrc
- 命令模式: 對(duì)當(dāng)前vim進(jìn)程有效
- (1) 行號(hào):
- 顯示: set number, 簡(jiǎn)寫為set nu
- 取消顯示: set nonumber, 簡(jiǎn)寫為set nonu
- (2) 括號(hào)匹配
- 匹配: set showmatch, 簡(jiǎn)寫為set sm
- 取消: set noshowmatch, 簡(jiǎn)寫為set nosm
- (3) 自動(dòng)縮進(jìn)
- 啟用: set ai
- 禁用: set noai
- (4) 高亮搜索
- 啟用: set hlsearch
- 禁用: set nohlsearch
- (5) 語法高亮
- 啟用: syntax on
- 禁用: syntax off
- (6) 忽略字符的大小寫
- 啟用: set ic
- 不忽略: set noic
-
配置文件: 永久有效