概述
vi: Visual Interface
vim: VI iMproved
?
vim模式
有三種:
編輯模式(命令模式)
如:通過命令新增一行,刪除一行,復制一行,光標移動等
輸入模式
輸入模式在屏幕末尾一定有這個“-- INSERT --”
末行模式
ESC,從輸入模式退出進入到編輯模式。輸入冒號,進入末行模式。
模式轉換
編輯-->輸入:
i: 在當前光標所在字符的前面,轉為輸入模式;
a: 在當前光標所在字符的后面,轉為輸入模式;
o: 在當前光標所在行的下方,新建一行,并轉為輸入模式;
I:在當前光標所在行的行首,轉換為輸入模式
A:在當前光標所在行的行尾,轉換為輸入模式
O:在當前光標所在行的上方,新建一行,并轉為輸入模式;
?
輸入-->編輯:
ESC
編輯-->末行:
:
?
末行-->編輯:
ESC, ESC
?
要養成的習慣:
輸入完一行就退回到編輯模式,不要在輸入模式里移動光標。
輸入模式和編輯模式是經常切換的。
一、打開文件
# vim /path/to/somefile
vim +# :打開文件,并定位于第#行。如profile第5行:vi/vim +5 profile
vim +:打開文件,定位至最后一行
vim +/PATTERN : 打開文件,定位至第一次被PATTERN匹配到的行的行首
例:打開進入profile文件里第一次出現“HOME”的行。
[root@hello110 /]# vi +/HOME profile
使用 N (next)命令,查找下一個帶有HOME的行。
默認處于編輯模式
二、關閉文件
1、末行模式關閉文件
:q ?退出
:wq 保存并退出
:q! 不保存并退出
:w 保存
:w! 強行保存
2、編輯模式下退出
ZZ: 保存并退出
三、移動光標(編輯模式)
1、逐字符移動:
h: 左
l(L): 右
j: 下
k: 上
?#h: 移動#個字符;
?
2、以單詞為單位移動
w: 移至下一個單詞的詞首
e: 跳至當前或下一個單詞的詞尾
b: 跳至當前或前一個單詞的詞首
3、行內跳轉:
0: 絕對行首
^: 行首的第一個非空白字符
$: 絕對行尾
四、翻屏
Ctrl+f: 向下翻一屏
Ctrl+b: 向上翻一屏
?
Ctrl+d: 向下翻半屏
Ctrl+u: 向上翻半屏
?
五、刪除單個字符
x: 刪除光標所在處的單個字符
#x: 刪除光標所在處及向后的共#個字符
?
六、刪除命令: d
d命令跟跳轉命令組合使用;
#dw??刪除光標下一個單詞,
#de?刪除光標到行結尾的,
#db?刪除光標上一個單詞
dd: 刪除當前光標所在行
#dd: 刪除包括當前光標所在行在內的#行;
例子:
末行模式下:
.: 表示當前行
$: 最后一行
+#: 向下的#行
命令功能:
. ??當前光標所在行
, ?是分隔符
刪除當前光標后3行。
七、粘貼命令 p
p: 如果刪除或復制為整行內容,則粘貼至光標所在行的下方,如果復制或刪除的內容為非整行,則粘貼至光標所在字符的后面;
P: 如果刪除或復制為整行內容,則粘貼至光標所在行的上方,如果復制或刪除的內容為非整行,則粘貼至光標所在字符的前面;
大寫和小寫的p復制位置有區別
八、復制命令 y
用法同d命令。如:復制一行 yy
復制:光標所在位置開始到,文檔末尾倒數3行為止的內容。
九、修改:
先刪除內容,再轉換為輸入模式
c: 用法同d命令
?
十、替換:r
R: 替換模式
r+要修改的內容。例子:rw:將光標所在的位置的值改成w
十一、撤消編輯操作 u
u:撤消前一次的編輯操作
連續u命令可撤消此前的n次編輯操作
#u: 直接撤消最近#次編輯操作
?
撤消最近一次撤消操作:Ctrl+r
十二、查找
/PATTERN
?PATTERN
n
N
區別:
/ 時,按n鍵,往下查
? 時,按n鍵,往上查
十三、將當前文件中部分內容另存為另外一個文件
末行模式下使用w命令
:w
:ADDR1,ADDR2w /path/to/somewhere
舉例::1,5 w ~/163.txt
? ? 把第一行到第五行復制到 ~/163.txt
:12,17 w>> ~/163.txt
? ? 把12到17行追加到 163.txt
:w filename
打開一個文件并修改后,保存成為另一個文件,原文件內容不變
十四、將另外一個文件的內容填充在當前文件中
:r /path/to/somefile
十五、跟shell交互
:! COMMAND
在末行模式下,用感嘆號+linux命令