末行模式:
行间跳转
#
$: 跳到当前行的最后一个字符处正则表达式
内容定界:
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