請詳細總結vim編輯器的使用并完成以下練習題
vim編輯器的使用
vim模式:
a,編輯/命令模式;
b,insert/輸入模式
c,末行模式
打開文件:
vim [option]… file…
+#:打開文件后,直接讓光標處于第#行行首
+/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
模式轉換:
編輯模式 –> 輸入模式
i:insert ,在光標所在之前輸入
a:append,在光標所在之后輸入
o:在光標所在行下方開始新行
I:在光標所在行行首輸入
A:在光標所在行行尾輸入
O:在光標所在行的上方開始新行
輸入模式 –> 編輯模式 按ESC
編輯模式 –> 末行模式 按:
關閉文件
:q 退出
:q! 不保存修改,強制退出
:wq 保存退出
:x 保存退出
:w /path/to/somefile
ZZ 保存退出
光標跳轉
字符間跳轉:h左,j下,k上,l右
#command:跳轉由#指定的個數的字符
單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一個單詞的詞尾
b:當前或下一個單詞的詞首
#command:跳轉由#指定的個數的單詞
行首行尾跳轉:
^:跳轉至行首的第一個非空白字符
0:跳轉至行首
$:跳轉至行尾
行間移動:
#G:跳轉至指定的#行
G:最后一行
1G,gg:第一行
句間移動:
):下一句
(:上一句
}:下一段
{:上一段
VIM的編輯命令:
字符編輯:
x:刪除光標處的字符
#x:刪除光標處以后的#個字符
xp:交互光標所在處及其后面單個字符的位置
刪除命令:
d:刪除命令,可結合光標跳轉字符,實現范圍刪除
d$ d^ d0
dd 刪除光標所在整行
粘貼命令paste:
p:編輯器緩沖區存儲的如果是整行,則粘貼至當前光標所在行的下方,否則,粘貼至當前行的后方
P:編輯器緩沖區存儲的如果是整行,則粘貼至當前光標所在行的上方,否則,粘貼至當前行的前方
復制命令yank:
y:復制,命令方式和d命令一樣
改變命令change:
c:修改,并從編輯模式 –> 輸入模式
替換命令replace:
r:替換
可視化模式
v:按字符選定
V:按行選定
Note:經常結合編輯命令,d c y
撤銷此前的編輯undo:
u:撤銷此前的操作
恢復此前的撤銷:
Ctrl+r
重復前一次編輯操作:.
翻屏操作:
Ctrl+f : 向下翻屏
Ctrl+b:向上翻屏
Ctrl+d:向上翻半屏
Ctrl+u:向下翻半屏
Vim中的末行模式:
內建的命令行接口
1. 地址定界
:start_pos,end_pos
:m,+n 選定從第m行開始向下的n行
:.,$ 選定當前行到最后一行
:1,$-1 從第一行到倒數第二行
:% 全文
:/pattern1/,/pattern2/ 選定從第一次pattern1匹配到的行到第一次被pattern2匹配到的行中間的所有行
使用方式:
后跟一個編輯命令
r /path/to/somefile 在指定位置插入指定文件中的所有內容
2. 查找
/pattern:向下查找
?/pattern:向上查找
3. 查找并替換(分隔符可使用其他字符,例如s#p1#p2#)
s:在末行模式下完成查找替換操作
s/查找的內容/替換的內容/修飾符
s/pattern/替換的內容/修飾符 替換的內容可以使用\1 , \2,還可以使用 & 引用前面查找到的內容
修飾符:
i:忽略大小寫
g:全局替換,默認替換只替換第一次匹配到的內容
VIM編輯多文件模式
vim file1 file2 file3…
:next 跳轉到vim打開的下一個文件
:prev 跳轉到vim打開的前一個文件
:first 跳轉到VIM打開的第一個文件
:last 跳轉到VIM打開的最后一個文件
:wall 保存所有文件
:qall 退出所有
VIM窗口分隔模式
vim -o|O file1 file2.。。
-o:水平分割
-O:垂直分割
在窗口間切換,Ctrl+w,方向鍵
單文件窗口分割
Ctrl+w,s:split,水平分割
Ctrl+w,v:vertical,垂直分割
定制VIM的工作特性:
配置文件:永久有效
全局:/etc/vimrc
個人:~/.vimrc
末行:當前vim進程有效
1. 行號
顯示:set number,簡寫set nu
取消顯示:set nonumber,簡寫 set nonu
2. 括號匹配
匹配:set showmatch,簡寫為 set sm
取消匹配:set nosm
3. 自動縮進
縮進:set ai
取消縮進:set noai
4. 高亮搜索
啟用:set hlsearch
取消:set nohlsearch
5. 語法高亮
啟用:syntax on
取消:syntax off
6. 忽略大小寫
啟用:set ic
不忽略:set noic
VIM 如何獲取幫助
末行模式下使用 :help command
1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;
:%s/^[[:space:]]\+/#/
2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
:%s/^[[:space:]]//
3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符
:%s/^#[[:space:]]\+//
4、為/tmp/grub.conf文件中前三行的行首加#號;
:1,3s/^/#/
5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;
:%s/gpgcheck=0/gpgcheck=1/ :%s/enabled=0/enabled=1/
6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202
#!/bin/bash # cp -R /etc /backup/etc-$(date +%Y%m%d%H%M) crontab -e 0 */4 * * * /backup.sh
7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402
#!/bin/bash # cp -R /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d) crontab -e 0 0 * * 2,4,6 /backup.sh
8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中
#!/bin/bash # grep '^S' /proc/meminfo > /stats/memory.txt crontab -e 0 */2 * * * /meminfo.sh
9、工作日的工作時間內,每兩小時執行一次echo ""howdy""
#!/bin/bash # echo "howdy" crontab -e 0 9-18/2 * * 1-5 /howdy.sh
腳本編程練習
10、創建目錄/tmp/testdir-當前日期時間;
mkdir -p /tmp/testdir-$(date +%F-%T)
11、在此目錄創建100個空文件:file1-file100
for i in {1..100};do touch file$i;done
12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;
[root@localhost backup]# awk -F: '{if(NR%2==0){print $1}}' /etc/passwd
13、創建10用戶user10-user19;密碼同用戶名;
[root@localhost backup]# for i in {10..19};do useradd user$i;echo "user$i" | passwd --stdin user$i ;done
14、在/tmp/創建10個空文件file10-file19;
[root@localhost backup]# for i in $(seq 10 19);do touch file$i;done
15、把file10的屬主和屬組改為user10,依次類推。
[root@localhost backup]# for i in {1..10};do chown user$i:user$i file$i;done
原創文章,作者:Net21_木頭,如若轉載,請注明出處:http://www.www58058.com/35605
寫的很好,排版還可以在漂亮一點,加油