vim 是vi編輯的升級版,同樣有三種工作模式:編輯、命令和一般 模式
#:指定行號位置
#,#:指定多少行到多少行
#,+#:指定范圍,多少行開始,加#行
$:最后一行
.:當前行
.,$-1,當前行到倒數第二行
1,$:全文
%:全文
/從上往下,?:從下往上 搜索
/pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行
s/要查找的內容/替換的內容/修飾符
要查找的內容:可以使用正則表達式
替換內容:不能使用正則表達式,但可以引用
vim操作多文件功能
vim file1 file2….
文件間切換:
:next(n) 下一個文件
:prev(N) 上一個文件
:first 第一個文件
:last 最后一個文件
:files 列出所有文件
:wqall 保存全部退出
:wall 全部保存不退出
:qall 全部退出不保存
vim -o file1 file2 ,,,水平分割
vim -O file1 file2… 垂直分割
ctrl+w,s 垂直分割
ctrl+w,v 水平分割
可以自定義一些vim特性,編輯:~/.vimrc
set ai 自動縮進 noai
set si
set ci ;C風格縮進
set showmatch 括號匹配高亮度 noshowmatch
set hlsearch ;搜索高亮 nohlsearch
syntax on ;語法高亮 syntax off
set ic ; noic 忽略大小寫
help 獲取幫助 help subject
實例:
1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;
:%s/^\([[:space:]]\+\)/#\1/g 或者:%s/^\([[:space:]].*\)/#\1/g
2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
:%s/^[[:space:]].*//g
3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符
:%s/^#[[:space:]]\+\([^[:space:]].*\)/\1/g 或者 :%s/^#[[:space:]]\+\([^[:space:]]\+\)/\1/g
注意:前者后面的是貪吃模式,沒有關系,但是前面的\+就不能換成.*
4、為/tmp/grub.conf文件中前三行的行首加#號;
:1,3s/^.*/#&/g
5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;
:%s/\(gpgcheck\|enabled\)=0/\1=1/g
6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202
0 */4 * * * cp -rf /etc/ /backup/etc-$(date +\%Y\%m\%d\%H\%M)
7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402
0 0 * * 2,4,6 cp -f /var/log/messages /backup/messages_logs/messages-$(date +\%Y\%m\%d)
8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中
0 */2 * * * grep -i "^s" /proc/meminfo >> /stats/memory.txt
9、工作日的工作時間內,每兩小時執行一次echo "howdy"
0 */2 * * 1-5 echo "howdy"
腳本編程練習
10、創建目錄/tmp/testdir-當前日期時間;
11、在此目錄創建100個空文件:file1-file100
12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;
如果cat -n 的話,顯示行號,很容易看出來,但是后邊的cut就要變了
cat -n /etc/passwd | awk NR%2==0 | cut -d ':' -f 1 | grep -E "\<[[:alpha:]].*" -o
原創文章,作者:不忘初衷,如若轉載,請注明出處:http://www.www58058.com/66403