VI命令学习

    技术2022-05-11  105

    VI Command learning

    VI是Unix中标准的文本编辑器之一。

    VI中命令区分大小写,工作模式分为插入与命令模式,命令模式包括基本命令和ex编辑命令,ex编辑命令一般出现在屏幕下方,由:引出。

    VI命令格式:[命令] (文本)[命令] (数字)(文本)(数字)[命令] (文本)

    基本命令:i a c d y p u x w q o r s

    vi [filename] 打开一个指定文件基本文本处理i               在当前光标前插入文本I              在行首插入文本 a            在当前光标后插入文本A             在行尾插入文本O            在当前行前插入一行o            在当前行后插入一行x             删除当前光标字符xw          删除单词x$          删除到行尾x0           删除到行首5x          删除5个字符0  光标移动到当前行第一个字符$  光标移动到当前行最后一个字符h  光标左移一个空格l  光标右移一个空格j  光标下移一行k  光标上移一行w|W  光标前移一个单词b|B  光标后移一个单词p               粘贴移动或复制文本可以通过先删除(dd),然后粘贴(p)的方法实现,如dd删除一行,p粘贴改行,x删除字符,p粘贴字符。c | C  修改文本cw  修改单词,并插入c$  修改到行尾c0  修改到行首cc  替换当前行d |D            删除字符dw  删除单词d$  删除到行尾dd  删除当前行r|R  替换当前文本S  替换当前行s  替换字符~  字母大小写转换y | Y           复制文本yw  复制单词y$  复制到行尾y0  复制到行首yy  复制一行4yy  复制4行.  重复操作u  撤销上一次操作U  撤销改行任何操作J  合并当前行与下一行参数可以带数字使用,如4h左移4个空格, 50i* 插入50个*   / | n  向前搜索   ? | N  向后搜索   ^F   向前滚一屏   ^B   向后滚一屏   ^D   向前滚半屏   ^U   向后滚半屏   ^L   刷新屏幕 编辑命令扩展vi + [file] 打开文件到最后一行vi -r [file] 系统崩溃后恢复文件vi +n [file] 打开文件到第n行vi +/pattern [file] 打开文件到模式首次出现的地方vi -R  以只读模式打开文件//1-9  前9次删除操作vi编辑器中可以CTRL+Z挂起vi,返回Unix shell状态,进行其他工作,unix shell中的fg 命令可以使当前工作返回第一个挂起的vi窗口ex行编辑器vi中,在ex行命令可以用!调用unix系统命令,如!ls, 列出当前目录的所有文件,!df 察看当前硬盘使用情况。ex命令由行号和命令组成,以回车键结束。:1   到第一行:1,3   打印1~3行:$   到最后一行:shift + G  到最后一行:p   恢复缓冲区的内容(如:1p :3p):s/screen/line  替换当前行第一个screen 为 line:1,3 s/screen/l 替换1~3行的screen为lQ  进入ex编辑命令模式vi  返回vi编辑器:delete|d 删除:copy |co|t copy 并粘贴 copy的内容:move [行号]|m move到指定行:23,29co100 复制23~29行并把他们粘贴到100行的后面:set nu  显示行号:=  显示总行号:.=  先是当前行行号行地址符号 .  当前行$  最后以行%  文件每一行(1,$)+  向后-  向前:.+20#  先是从当前行向后20行的行号:g  全局搜索:g/pattern 搜索符合模式的行:g!/patterhn  搜索不符合模式的行:w   保存但不退出.:w [newfile]  将当前修改保存到新文件.:wq || ZZ 保存退出.:e   不保存当前修改,回到初始版本文件.:q   退出不保存.:x  写文件并推出编辑器:1,10w>> [newfile] 使用>>重定向添加符 和w 把内容追加到文件:read [file] 读取系统中现有文件数据:r [file]:0r [file] 将要读取的文件放到当前文件的开始:12r [file] 将要读取的文件放到当前文件的12行后vi可以打开多个文件,通过ex命令在文件间切换,如vi temp test, 通过:vi temp, :vi test切换到不同文件,:n命令可以调用另一个文件:g | :s  全局替换/g  在当前行全局替换:s/old/new/g 当前行全局替换old字符为new:1,$s/old/new/g 全局替换:1,50s/old/new/g 替换1~50行:gc  确认替换,y 替换n  重复搜索%s/editer/editor/g == :g/editer/s//editor/ggrep/sed/awk 正则表达.  匹配单字符*  匹配其前面的单个字符的0个或多个实例:bugs* == bug | bugs*.  匹配任何数量的任何字符^  用于正则表达式的开始$/  将后面的字符视为普通字符:/* == *[]  匹配所包含字符的任何一个:p[aeiout]r == par | per....:g/^$/d  删除所有空行/U  替换字符为大写&  重复替换 Advanced vi command:set option 设置选项:set nooption 关闭选项设置:set all 显示所有选项:set ic  指定模式搜索忽略大小写:set noic 不忽略.exrc文件 控制vi环境的exrc文件位于主目录下(首次登陆时所在的目录),可以用vi编辑器修改.exrc文件:so sourcefile  可以调用sourcefile中的选项设置编程选项:set autoindent 自动缩进CTRL+D  取消一个缩进级别(插入模式)CRTL+T  实现另一个缩进级别(插入模式)>>  行右移(缺省8空格--实际上将制表符插入到文本中)<<  行左移8空格5>>  移动该段落中前5行:set shiftwidth=4 该选项可以更改缺省缩进的空格数目:set tabstop=4 设置tab制表符号的字符数目:set list 设置制表符显示为^I,行尾显示为$,通常屏幕中制表符和空白均显示为空白。:set showmatch 设置搜索技巧tabstopshiftwidthnumberlistautowrite 设置后,调用:n(下一个)命令移动到下一个文件编辑时,:! 运行shell命令之前将自动写出已修改的缓冲区内容:![command] 执行unix命令:!date  显示时间:!sort  排序文件:ab  单词缩写:unab  单词缩写失效:map  列出当前映射的所有字符:map x sequence 映射x为sequence编辑命令:unmap x 取消映射ex特殊键:^  CTRL+V^M  回车^[  ESC^H  Backspace^I  tab"...  双引号标记ex注释行,VIM -- Vi Improved
     

    最新回复(0)