VIM编辑器1
VIM编辑器vi improved vi:visual interface vim +/PATTERN f1 打开文件后光标处于第一个被匹配到PATTERN的行的行首,n键跳到下一个,即支持正则匹配 vim +n f1 直接打开f1文件并且将光标定位在第n行 vim -b f1 以二进制方式打开文件 vim -d f1 f2... 比较多个文件 vim -m f1 以只读方式打开文件 ex f1 或vim -e f1 直接进入ex模式 vi +/^user passwd //vi或vim支持正则表达式匹配,即打开passwd文件并将光标定位在匹配到以user开头的行 vim的模式: 命令模式(normal):默认打开模式,移动光标,剪切粘贴删除等 插入模式或编辑模式(insert):修改文本 扩展命令模式(extended command):保存,退出,帮助,:号后加命令 可视模式(visual):块选择操作 ESC键,退出当前模式。按两次ESC键,返回到命令模式 i:insert,光标前插入 I:在光标所在行首插入 a:append,光标后插入 A:在光标所在行尾插入 o:在光标所在行的下方插入新行 O:在光标所在行的上方插入新行 锁定和解锁:ctrl+s,ctrl+q 扩展模式: :q 退出 :q! 强制退出不保存修改 :wq 保存退出 :x 保存退出 :r f2 读取f2的文件内容到当前光标的下一行 :w f3 将当前编辑内容写入到另一个文件中 !cmd 执行命令并显示,回车退出 r!cmd 读取命令的输出到当前光标的下一行 :方向键 可以上下选择vi的历史命令,操作同bash,支持的快捷键操作^w,^u,^e 命令模式: ZZ:保存退出 ZQ:不保存退出 hjkl:左下上右移动 #cmd:3h向左移动3个字符 w:下一个单词词首 e:当前或下一个单词词尾 b:当前或前一个单词词首 #cmd:3w向下跳转3个单词 H:跳转到当前页页首 M:页中 L:页底 ^:跳转到行首的第一个非空白字符 0:跳转至行首,注意是数字零 $:跳转至行尾 #G或者:# :跳转至指定行,3G第三行,:10第10行 shift+3:即#号,匹配光标处的单词,并高亮显示文件中的所有相同的单词,n键跳转 G:最后一行 1G,gg:第一行 ):下一句 (:上一句。句子以.隔开 }:下一段 {:上一段。段落以空行隔开 ctrl+f:向文件尾部翻一屏 ctrl+b:向文件首部翻一屏 ctrl+d:向文件尾部翻半屏 ctrl+u:向文件首部翻半屏 x:删除光标处的字符 #x:删除光标处之后的#个字符 xp:交换光标所在处的字符及其后面字符的位置 ~:转换大小写 r:替换光标所在处的1个字符,3r三个字符 R:完全替换模式,ESC退出 d:删除范围,可配合方向键hjkl删除当前行和同方向行 d$:删除到行尾 d^:删除到非空行首 d0:删除到行首 dw,de,db dd:删除行,3dd向下删除3行 D:从光标当前位置一直删除到行尾,保留空行,等同于d$ y:复制,y$,y0,y^,ye,yw,yb yy:复制行,Y复制整行 p:小写,若为行粘贴则是粘贴在当前光标所在行的下方;若为文本则粘贴在光标的后面 P:大写,若为行粘贴则是粘贴在当前光标所在行的上方;若为文本则粘贴在光标的前面 c:修改后切换到插入模式 c$,c^,c0,cb,ce,cw cc:删除当前行并输入新内容 C:删除当前光标到行尾,并切换到插入模式 100iroot[ESC]粘贴root 100次 0y$:组合命令:0-移到行首,y-从这里开始复制,$-复制到本行的最后一个字符 ye:从当前位置复制到本单词的最后一个字符 gU:变大写 gu:变小写 扩展命令模式:以:为命令开始,显示在左下角,以下:均省略,不再说明 #,#:3,9:从第3行到第9行 #,+#:3,+4:从第3行到第7行 .:当前行 $:最后一行 .,$-1:当前行到倒数第二行 %:全文,相当于1,$ vim支持正则表达式,在扩展命令模式下 /pat1/,/pat2/ :从第一次被pat1模式匹配到行开始,一直到第一次被pat2匹配到的行结束 #,/pat/ , /pat/,$ 使用方式:后面跟一个编辑命令 d,y,w,r w f3:将指定范围内的行另存到指定文件中 r f2:在指定位置插入指定文件中的所有内容 vim +/usera passwd 直接跳转至usera的行 :/^bin/,/^halt/y 复制以bin开头,以halt结尾的行 /word:从光标处向下查找 ?word:从光标处向上查找 n:与命令同方向 N:与命令反方向 s/查找的内容/替换的内容/修饰符 :查找并替换 s/root/rooter/g s/root/&er/g 同上,&表示引用前面查找到的内容 s/r..t/&er/g 简写,使用正则方式 s/r..t/user:&/g 正则 修饰符:i忽略大小写,g全局替换,gc全局替换,每次替换前询问 查找替换中的分隔符/可以替换为其他的字符,如#@+,方便替换路径,如: s@/etc@/var@g :将/etc替换为/var,全部替换 s#/boot#/#i :将/boot替换为/且忽略大小写 vi fstab :%s/^#/*/ 表示以#开头的行替换为以*开头 :1s/root/ROOT/g 替换第一行的root为ROOT :1s/root/a&b/g :%s/^#// 表示删除注释符# :%s/^UUID/#&/ :%d 清空文件 :%s@/dev/sd@/etc/hd@g 命令模式:撤销更改 u:撤销最近的更改,3u撤销前3次 U:撤销此行的所有更改,条件为光标必须始终定位在此行,否则无效 ctrl+r:重做 .:重复一个操作 n.:重复前一个操作n次 录制宏:命令模式下 qa //开始录制宏,名称为a 操作编辑。。。 //开始操作 q //退出编辑操作 @a //运行宏a @@ //重复执行宏 vim的寄存器: 有26个命名的寄存器(a,b,c...z)和1个无命名的寄存器 名称寄存器格式:"寄存器名称。放在数字和命令之间,如3"tyy 表示复制3行到t寄存器中 未指定名称,则使用无命名寄存器:3yy 表示复制三行到无命名寄存器中 有10个数字寄存器(0-9)0为最近复制,1为最近删除的内容。变更1转存到2,2转存到3,以此类推,数字寄存器不能在不同会话间共享。 格式:数字"寄存器命令,5"bdd,未指定则使用无命名寄存器4"y 3yy:复制3行 3"ayy:复制3行到a寄存器 "ap:粘贴a寄存器的内容 编辑二进制文件步骤: dd if=/dev/zero of=b1 bs=1 count=6 hexdump b1 hexdump -C b1 vim -b b1 :%!xxd 切换为可读的十六进制 进行编辑二进制文件 :%!xxd -r 重新转换回二进制 :wq 保存退出 可视模式: v 面向字符 V 面向行 ctrl+v 面向块 可视化键可用于与移动键结合使用,w,),},箭头等 突出显示的文字可被删除,复制,变更,过滤,搜索和替换 多文件模式: vim f1 f2 f3 ... :next 下一个 :prev 前一个 :first 第一个 :last 最后一个 :wall 保存所有 :qall 退出所有 :wqall 多窗口: vim -o f1 f2 o:水平分割,O:垂直分割 ctrl+w 窗口间切换 单文件窗口分割,重复打开当前文件,Windows下Ctrl+Tab切换,顺序为从上往下,从左往右。 :vs 左右 :sp 上下 Ctrl+ww 窗口切换,同Ctrl+Tab Ctrl+wh 切换到左侧窗口,wl右侧窗口,wj向下,wk向上。hjkl左下上右 ctrl+w,s 水平分割,split ctrl+w,v 垂直分割,vertical ctrl+w,q 取消相邻窗口 ctrl+w,o 取消全部窗口 :wqall 退出 定制vim配置文件 全局/etc/vimrc,个人~/.vimrc set [no]nu 行号 set [no]sm 括号成对匹配 set [no]ai 自动缩进 set [no]hlsearch 高亮搜索 set [no]ic 忽略字符大小写 syntax on[off] 语法高亮 set fileformat=dos 启用Windows格式 set fileformat=unix 启用unix格式 "设置文本宽度 :set textwidth=65 :set wrapmargin=15 :help option-list 查看所有选项列表 :set or :set all 查看所有set设置 :source % 使当前编辑的配置文件生效(可简写为:so %),编辑窗口不能关闭 vimtutor 命令行直接打开,可自由编辑,关闭后自动还原,用于练习vim命令 :e . 打开当前目录 :echo $MYVIMRC 显示vimrc配置文件的路径 :source $MYVIMRC nmap,ev :e $MYVIMRC<cr> 定义快捷键编辑vimrc :tabedit $MYVIMRC 新开标签页 :tabclose 关闭当前标签页 nmap,ev :tabedit $MYVIMRC<cr> 通过快捷键,ev在新标签打开vimrc配置文件 通过设置统一的快捷键首mapleader来实现组合多个功能操作 "--------------Mappings---------------" let mapleader = "," nmap <leader>ev :tabedit $MYVIMRC<cr> nmap <leader><space> :nohlsearch<cr> nmap <leader>w :w<CR> "自动加载vimrc文件 augroup autosourcing autocmd! autocmd BufWritePost _vimrc source % 自动加载vimrc文件 augroup END "窗口切换,ctrl+j向下,ctrl+k向上,ctrl+h向左,ctrl+l向右 nmap <c-j> <c-w><c-j> nmap <c-k> <c-w><c-k> nmap <c-h> <c-w><c-h> nmap <c-l> <c-w><c-l> "设置tab键为4个空格 set ts=4 set expandtab set autoindent (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |