vim編輯器使用與詳解
vim :vi improved
vi的模式:
編輯模式:鍵盤操作通常被解析為編輯指令:
輸入模式:
末行模式:vim的内置的指令行接口,執行vim内置指令
編輯模式-->輸入模式
i:目前光标處輸入内容
I:在目前光标所在行的行首
a:在目前光标所在處的後面
A:在目前光标所在行的行尾輸入
o:在光标所在行的下方新增一行空白行
O:在光标所在行的上方新增一行空白行
輸入模式- -> 編輯模式
ESC
編輯模式- ->末行模式
:
末行模式- ->編輯模式
ESC,ESC
vi指令的使用格式
vim [options] /path/to/file
–d file1 file2… 比較多個檔案
–b file 二進制方式打開檔案
+/PATTERN 讓光标處于第一個被PATTERN比對到的行的行首
-m file 隻讀打開檔案
vim -e file 或 ex file 直接進入ex模式
退出:
:q!強制退出,不儲存并退出
:wq 儲存修改并退出
:x,儲存并退出
w 寫(存)磁盤檔案
wq 寫入并退出
x 寫入并退出
q 退出
q! 不存盤退出,即使更改都将丢失
r filename 讀檔案内容到目前檔案中
w filename 将目前檔案内容寫入另一個檔案
!command 執行指令
r!command 讀入指令的輸出
編輯模式:ZZ,儲存退出,ZQ不儲存退出
打開:
多檔案跳轉
:next 下一個
:prev 上一個
:first 第一個
:last 最後一個
:qall 退出所有的檔案
:wqall:修改并退出多個檔案
分隔視窗打開多個檔案
-o:水準分隔
ctrl+w,左右箭頭
-O:垂直分隔
ctrl+W,上下箭頭
+num:打開檔案後在第num号行首
+:打開檔案後在最後一行
光标移動:
單字元移動:
h:左
l:右
j:下
k:上
可以和數字組合
單詞間移動:
w:調至下一個單詞的詞首
b:目前或前一個的詞首
e:目前或下一個詞的詞尾
行内移動:
0:絕對行首
^:第一個非空白字元
$:絕對行尾
句子間移動:
):上一句
(: 下一句
段落間移動:
}:上一段
{:下一段
行間移動:
#G:第幾行
G:最後一行
目前頁跳轉:
H:頁首 M:頁中間行 L:頁底
zt:将光标所在目前行移到螢幕頂端
zz:将光标所在目前行移到螢幕中間
zb:将光标所在目前行移到螢幕底端
編輯操作:
x:删除光标所在處的字元
#x:删除光标所在處向後的#個字元
替換指令(r, replace)
r 替換光标所在處的字元
R 切換成REPLACE模式
d:删除指令
結果光标跳轉指令使用
%:全部
dd:删除一行
#dd:删除所在行後的#行
字元編輯:
x 删除光标處的字元
#x 删除光标處起始的#個字元
xp 交換光标所在處的字元及其後面字元的位置
~ 轉換大小寫
J 删除目前行後的換行符
di" 光标在冒号之間,則删除冒号之間的内容
yi( 光标在()之間,則複制()之間的内容
vi[ 光标在[]之間,則選中[]之間的内容
dtx 删除字元直到遇見光标之後的第一個 x 字元
ytx 複制字元直到遇見光标之後的第一個 x 字元
末行模式:範圍定界
start,end:可以使用絕對定界,也可以使用相對定界
.:表示目前行
$:最後一行
$-2:倒數第3行
/pat1/,/pat2/:起始處為光标所在行
c:修改後切換成插入模式
跟d一樣操作
y:yank,複制
跟d一樣操作
p:paste 粘貼
複制或删除的是整行
p:目前行的下一行
P:目前行的上一行
複制或删除的為非整行
p:粘貼在光标所在字元的後面
P: 粘貼在光标所在字元的前面
撤銷編輯
u:undo
#u:最近50次操作
撤銷此前的撤銷操作
ctrl+r:
重複執行此前的指令:
.
翻屏:
ctrl+f:向檔案尾部翻一屏
ctrl+b:向檔案首部翻一屏
ctrl+d:向檔案尾部翻半屏
ctrl+u:向檔案首部翻半屏
Enter:下一行
k :上一行
查找:
/keyword
?keyword
n:
N:
支援正規表達式
:set nohlsearch 關閉高亮顯示,對目前shell有效
vim的可視化模式
編輯模式:
v:按照光标走過的區域選擇
V:選擇矩形塊
vim可視化模式:
v: 按光标走過的區域選擇
V: 選擇矩形塊
打開多個檔案,分視窗:
vim -o
vim -O
Ctrl+w, 上下箭頭
分割目前視窗:
Ctrl+w, s 水準分割
Ctrl+w, v 垂直分割
Ctrl+w, q 關閉目前光标視窗
Ctrl+w, o 關閉所有視窗
視窗屬性的定義:
:set nu
:set nonu
:set ai 自動縮進
:set noai
:set ic
:set noic
顯示對應的括号
:set sm (show match)
:set nosm
文法高亮:
:syntax on
:syntax off
搜尋高亮:
:set hlsearch
:set nohlsearch
vim的配置檔案:
全局:/etc/vimrc
個人:~/.vimrc
查找替換:
:位址定界s/查找模式/替換為的内容/gi
g:全局替換
i:不區分大小寫
:位址定界[email protected]查找模式@替換為的内容@gi
&:用于在替換為的内容部分中引用前面比對到的所有内容
練習:
1.複制/etc/grup.conf至/tmp目錄,删除/tmp/grub.conf檔案中行首的空白符
:%s\^[[:space:]]\{1,\}\\g
2.複制/etc/rc.d/rc.sysinit至/tmp目錄。将/tmp/rc.sysinit檔案中的以至少一個空白字元開頭的行,行首加#号
:%[email protected]^[[:space:]]\{1,\}.*@#&@g
3.删除/tmp/rc.sysinit檔案中以#開頭且後面跟了至少一個空白字元的行的行首的#和空白符
:1,%[email protected]^#[[:space:]]\{1,\}@@g
4.為/tmp/grub。conf檔案中的前三行的行首加#号
:1,[email protected]^@#@g
5.将/etc/yum.repos.d/CentOS-Media.repo中enable=0一行最後的0改為1;
:%@\(enabled=\)[0-9]@\[email protected]