末行模式:
行間跳轉
#
$: 跳到當前行的最後一個字符處正則表達式
內容定界:
startpos,endpos
#: 第#行
.: 當前行
$: 最後一行
%: 全文,至關於1,$
10,$-1 將第10行到倒數第2行所有刪除vim
c, d, y等命令能夠直接附加在地址範圍後使用
:10,$-2dless
w /path/to/somefile: 將選定範圍內的內容保存至某文件中
:.,$w /path/to/somefile
r /path/from/somefile: 將指定的文件中的內容讀取到指定位置
s/查找模式/要替換成的內容/gi
查找模式:能夠使用正則表達式
要替換成的內容:不能使用模式,僅能使用引用spa
:%s/\<file\>/FILE/gi 將file單詞替換爲FILE
s@@@gi @做爲分隔符it
g: global, 全行替換
i: 不區分字符大小寫io
引用模式匹配到的全部內容,能夠使用&符號ast
練習:複製/etc/rc.d/init.d/functions至/tmp目錄
替換/tmp/functions文件中的/etc/sysconfig/init爲/var/log
%s/\/etc\/sysconfig\/init/\/var\/log/gi
%s@/etc/sysconfig/init@/var/log@gifunction
:1,.s@^@#@g 第一行到當前行在開頭添加#號
:1,.s@^#@@g 第一行到當前行在開頭刪除#號可視化
練習:
一、複製/etc/grub.conf至/tmp目錄,刪除/tmp/grub.conf文件中的行首的空白字符;
%s@^[[:space:]]\{1,\}@@g配置
二、複製/etc/rc.d/rc.sysinit至/tmp目錄,將/tmp/rc.sysinit文件中的以致少一個空白字符開頭的行的行首加#號;
%s@^\([[:space:]]\{1,\}.*\)@#\1@
%s@^[[:space:]]\{1,\}.*@#&@
三、刪除/tmp/rc.sysinit文件中以#開頭,且後面跟了至少一個空白字符的行的行首的#號和空白字符;
%s@^#[[:space:]]\{1,\}@@
四、爲/tmp/grub.conf文件中前三行的行首加#號;
1,3s@^@#@
五、將/etc/yum.repos.d/CentOS-Media.repo文件中的全部enable=0和gpgcheck=0兩行最後的0改成1;
%s@enable=0@enable=1@
%s@\(enable\|gpgcheck\)=0@\1=1@g
vim可視化模式:
v:光標走過的字符
V:光標走過的行
文本查找:
用法同less命令
/pattern
?pattern
n
N
翻屏:
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:
j:
k:
多文件模式:
:next
:previous
:last
:first
:wqall
多窗口模式:
多文件:
vim
-o: 水平分割
-O: 垂直分割
Ctrl+w, Arrow
單文件:
Ctrl+w, s: 水平分割
Ctrl+w, v: 垂直分割
窗口屬性定義:
:set nu
顯示行號
:set nonu
:set ai 自動縮進
:set noai
:set ic 忽略字符大小寫
:set noic
:set sm 顯示與之匹配的括號
:set nosm
語法高亮:
:syntax on|off
搜索高亮:
:set hlsearch
:set nohlsearch
配置文件: 全局:/etc/vimrc 用戶:~/.vimrc