vim基本用法汇总
vim工作模式:编辑模式(命令模式)输入模式末行模式 启动vim:vim [option] FILE ...vim +[#] FILE 打开文件并使光标处于第N行 (本文中#表示数字N)vim + FILE 打开文件使光标处于最后一行vim +/PATTERN FILE ... 打开文件使光标处于被模式匹配到的第一行的行首退出vim:未修改直接退出:q不保存强制退出:q!保存退出:wq, 强制保存(编辑只读文件等特殊文件时):w!保存: 在编辑模式下,ZZ打开默认模式:编辑模式编辑模式-->输入模式:i: 当前光标所在字符前面插入a: 当前光标所在字符后面插入o: 当前光标所在行的下方新增空白行并输入I:当前光标所在行的行首插入A:当前光标所在行的行尾插入O:当前光标所在行的上方新增空白行并输入c: 先删除指定范围的内容,再转换至输入模式(同d用法类似)输入模式-->编辑模式:Esc编辑模式-->末行模式:末行模式-->编辑模式:Esc不马上回到编辑模式Esc Esc 马上回到编辑模式光标跳转:h 左j 下k 上l 右词间跳转:w: 下一个单词的词首#w: 跳N个单词e: 跳转至后面一个单词的词尾b: 跳转至前面一个单词的词首都支持前面加#行首,行尾跳转:^跳转至第一个非空白字符,0跳转至绝对行首 $ 跳转至行尾行间跳转:#G 跳到第几行G 直接跳转至文件尾部末行模式下跳转::# 跳转到第几行翻屏操作:Ctrl, f 往下翻一屏 Ctrl, b 往上翻一屏Ctrl, d 往下翻半屏 Ctrl, u 往上翻半屏 翻行 Enter 或者上下键删除:x: 删除光标处的一个字符#x: 从光标所在处往后删除几个字符X:删除光标前的一个字符均支持前面加#的用法d:删除dw d$ 删除光标到行尾的内容 (D)d0 删除光标到行首的内容可以结合跳转字符dd 删除光标所在行#dd 删除光标所在行往下几行末行模式下的删除:地址定界:ADDR1,ADDR2.: 表示当前行$: 表示最后一行相对地址定界:+#, -#/PATTERN1/,/PATTERN2/d 删除第一次被模式一匹配到的行(当前行不算)到第一次被模式二匹配到的行中间的行用法示例:1,50d (敲回车)删除1-50行.,$d 删除当前行到最后1,+5d 删除第一行以下5行,包括第一行.,-5d 删除从当前行到以上5行.,$-1 删除当前行到倒数第二行p:删除或复制的是整行:在当前光标所在行下方粘贴删除的单词或行的部分:在当前光标所在处后方粘贴P:删除或复制的是整行:在当前光标所在行上方粘贴删除的单词或行的部分:在当前光标所在处前方粘贴y:复制 (用法跟粘贴类似)y: 一般结合w, b, e, ^, 0, $等跳转字符使用yy: 复制光标所在行#yy 复制光标所在行到以下几行支持末行模式定界可视化模式:v:按字符选取V:按行选取撤消编辑操作:u: 撤消上一次编辑操作 默认最多可撤销最近50次#u: 撤销最近N次,只在编辑模式下支持 末行模式下不支持Ctrl + r:撤消最后的撤消操作vim搜索:/keyword?keyword使用/keyword时n 表示跳转到下一个搜索到的内容N 表示跳转到上一个搜索到的内容使用?keyword时n 表示跳转到上一个搜索到的内容N 表示跳转到下一个搜索到的内容搜索到的内容高亮显示查找并替换:在末行模式下使用s命令:定界s/查找的内容/替换成的内容/gi查找的内容:支持正则表达式替换成的内容:不支持正则表达式,但可使用前向引用修饰符:g:全局替换 (不加g只替换匹配到的第一次)i:忽略大小写用法示例::1,20s/fi/FI/g 1-20行fi替换为FI:1,20s/\<u...e\>/ABC/g 把1-20行以u开头以e结尾的字符串替换为ABC:1,20s/\<u\([[:alpha:]]\{3\}e\)\>/U\1/g 把1-20行以u开头后跟3个字母以e结尾的单词前面的u换为U&:用于引用查找到的整个字符串,例如::1,20s/n..e\>/&r/g搜索到匹配到的内容,在其后加r定界符:1,$ = %分隔符可以是任意特殊字符:一般常用一下几种/、#、@·····:%s/^#[[:space:]]*//g删除所有以#开头的行中的#和其后的空格:%s/[A-Z]//g 删除所有大写字母末行:!shell command 可以同shell交互定界符w /path/to/somewhere 将指定的内容复制到另一个文件中,例如::1,50w /root/test/vim.txt 将正在编辑的文件中的1-50行复制到/root/test/vim.txt中窗口拆分:Ctrl-w, s:水平拆分 (Ctrl + w 松开之后再按s,下同)Ctrl-w, v: 垂直拆分切换窗口Ctrl-w, ARROW(方向键)Ctrl-w, q 关闭光标当前所在的窗口vim打开多个文件:vim FILE1 FILE2:next 切换至后一个文件:prev 切换至前一个文件:first 切换至第一个一个文件:last 切换至最后一个文件wall 同时保存wqall 同时保存退出qall! 同时不保存退出打开多个文件并拆分显示-o 水平拆分,例如: [root@localhost test]# vim -o rc.sysinit vim.txt-O 竖直拆分定制vim的工作属性:(仅对当前vim有效):set [no]nu 显示(关闭)行号:set [no]ai 自动缩进:set [no]ic 忽略大小写:syntax on|off 语法高亮若想长期有效,修改配置文件:全局配置文件:/etc/vimrc 个人配置文件:~/.vimrc 不存在 (默认不存在,用时需创建)