6.21 5.5-5.7
小寫i
在當前光標所在位置進入編輯模式
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
-- 插入 --
大寫i
在光標所在行行首進入編輯模式
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
-- 插入 --
小寫o
從光標所在行後面另起一行進入編輯模式
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
-- 插入 --
大寫o
從光標所在行上面另起一行進入編輯模式
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
-- 插入 --
小寫a
光標向後移動一位並進入編輯模式,向當前位置後面插入內容
大寫a
移動到當前行的行末並進入編輯模式
進入編輯模式後,一般模式下的所有快捷鍵均無法使用
5.6 vim命令模式
搜索字符(串):輸入:進入命令模式,再輸/跟要查找的內容回車即可
使用/查找
…
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
已查找到文件結尾,再從開頭繼續查找
所有匹配搜索條件的字符(串)會高亮顯示;
按n光標會向下逐一移動到對應的字符(串)上;
按shift+n會向上逐一移動到對應字符(串)上;
使用?查找
…
hyc:x:1000:1000::/home/hyc:/bin/bash
hyc1:x:1001:1001::/home/hyc1:/bin/bash
hyc2:x:1006:1001::/home/hyc2:/bin/bash
hyc3:x:1007:1005::/home/hyc111:/sbin/nologin
hyc4:x:1008:1008::/home/hyc4:/bin/bash
hyc5:x:1014:1001::/home/abc:/sbin/nologin
hyc6:x:1015:1015::/home/hyc6:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
?hyc
按n會逐一向上匹配字符(串);
按shift+n會逐一向下匹配字符(串);
替換字符(串)
…
99 boot1:x:1001:1001::/home/boot1:/bin/bash
100 boot2:x:1006:1001::/home/boot2:/bin/bash
101 hyc3:x:1007:1005::/home/hyc111:/sbin/nologin
102 hyc4:x:1008:1008::/home/hyc4:/bin/bash
103 hyc5:x:1014:1001::/home/abc:/sbin/nologin
104 hyc6:x:1015:1015::/home/hyc6:/bin/bash
105 root:x:0:0:root:/root:/bin/bash
106 bin:x:1:1:bin:/bin:/sbin/nologin
107 daemon:x:2:2:daemon:/sbin:/sbin/nologin
108 adm:x:3:4:adm:/var/adm:/sbin/nologin
:1,100s/hyc/boot/g :替換文檔中1到100行中的所有字符串hyc為boot
g:不加g則僅替換第一次遇見的條件匹配的字符(串),後面匹配條件的字符(串)將不被替換
s:表示替換
1,100:1到100行
命令行模式下按上下方向鍵可以調出之前用過的命令
當要被替換的字符(串)裏也包含/時:
:1,$s//home/hyc/uuu/g 用uuu替換/home/hyc
這種情況下系統將第一個/後的內容識別為空,第二個/後識別為home,一般第三個/後應為g或不應再有字符,但此時第三個/後出現其他字符,系統無法識別,此時產生報錯信息“多余的尾部字符”
解決辦法:
1 脫義
:1,$s/\/home\/hyc/uuu/g
在上面寫法中home左側和hyc左側的/會被識別為命令行命令的一部分而不是普通字符,此處使用脫義符\將兩個/字符識別為純字符命令即可正常執行
2 更換命令使用的符號
:1,$s#uuu#/home/hyc#g
將命令使用的/用#代替;
/可以用#或@代替;
保存、退出
:q 退出
:w 保存
:wq 保存並退出
:x 保存退出
:w! 強制保存
:q! 強制退出
:x和:wq的區別:
當用戶打開文件後未做任何操作時,可以用這兩個命令保存退出;
當執行時,:x不會修改文件的mtime,因為未做任何操作;
執行:wq時,不管是否修改文件內容,文件的mtime都會改變;
其他
:set nonu 不顯示行號
:set nu 顯示行號
:nohl 取消高亮顯示
5.7 vim實踐
1 分別向下、右、左、上移動6個字符
向下:6+j
向右:6+l
向左:6+h
向上:6+k
2 分別向上和下翻兩頁
向上:ctrl+b
向下:ctrl+f
3 移動光標到第49行
行號 shift+g
4 把光標移動到行尾,再移動到行首
行尾:shift+$
行首:shift+^
5 移動到文件的最後一行
shift+g
6 移動到文件的首行
gg
7 搜索文件中出現的字符(串),並數出該字符串出現的次數
搜索root
從文件末尾開始:?root;使用n指出有多少root
從文件開頭開始:/root;使用n指出有多少root
8 把從第一行到第十行出現的root替換為fff
:1,10s/root/fff/g
9 還原上一步操作
u
10 把整個文件中的所有fff替換成root
:1,$s/fff/root/g
11 把光標移動到第25行,刪除字符串hyc
25 shift+g
移動光標到相應位置;
使用v選中字符串按x刪除
或 直接使用x刪除
12 還原上一步操作
u
13 刪除第50行
50 shift+g
dd
14 還原上一步操作
u
15 刪除第37到42行的所有內容
37 shift+g
5dd
16 還原上一步操作
u
17 復制第48行的內容並粘貼到第52行下面
48 shift+g
yy
52 shift+g
P
18 還原上一步操作
u
19 復制第37-42行的內容並粘貼到44行上面
37 shift+g
6yy
44 shift+g
shift+p
20 還原上一步操作
u
21 把37-42行的內容移動到19行下面
37 shift+g
6dd
19 shift+g
P
22 還原上一步操作
u(此時需要按兩次u)
23 把光標移動至首行,把第一行內容修改為“#!/bin/bash”
gg
按字母A進入編輯模式
編輯完成後按esc鍵退出編輯
24 在第一行下面插入新的一行,並輸入”hello!”
gg
輸入o進入編輯模式
輸入hello!
按esc鍵退出編輯
25 保存文檔並退出
:wq
6.21 5.5-5.7