vi 命令技巧 分类: ubuntu 2013-07-01 18:02 361人阅读 评论(0) 收藏

1. 打开、关闭行号
 
打开行号  :set nu
关闭行号  :set nonu
 
2.自动缩进
  • 打开自动缩进  :set ai
  • 关闭自动缩进  :set noai
  • 使用 :set ai sw=4 ( :set shiftwidth=4 )在一个命令中打开缩进并设置缩进级别
  • 在命令模式下,输入 :set ai(:set autoindent),然后按回车打开自动缩进功能,编辑模式下,在一行的开头输入空格或制表符,则后续的新行将会缩进到相同的位置
  • 通过设置 shiftwidth 确定缩进级别。例如,:set shiftwidth=4 把每级缩进设置为四个空格。在命令模式下,可以使用>> 命令让当前行增加一级缩进,使用<< 命令减少一级缩进;
  • 如果希望每次启动vi 会话时都启用自动缩进并把缩进级别设置为四个空格,那么在主目录中的.exrc 文件中添加 set ai sw=4 行。
3.在搜索时不区分大小写
  • 如果希望vi 不区分大小写,那么可以使用 :set ic(:set ignorecase )命令
  • 使用 :set noic ( :set noignorecase )启动区分大小写功能
  • 设置大小写功能后,再使用 /、?搜索字符串即可。
4.复合搜索
  •  使用/ 命令、?命令向下、向上搜索字符串
  • 如果希望跨行搜索出现在一个模式或字符串后面的某个模式或字符串不管这两个模式或 字符串是否在同一行上,那么可以指定由分号(;)分隔的两个搜索命令,从而执行复合搜索。例如,要想搜索出现在字符串{file}+1 后面的字符串 echo,应该使用/{file}+1/;/echo/。复合搜索对于寻找代码中出现在另一个命令后面的某个命令尤其有用  
  • 复合向下搜索格式:/定语字符串/;/目标字符串/  (注意定语字符串后面的/;)
  • 复合向上搜索格式:?定语字符串?;?目标字符串? (注意定语字符串后面的?;)
5.书签    (可以让vi 在文件中的特定位置放上书签)
  • 方法:按 Escape 键,再按 M 键,然后输入另一个表示书签引用的字母表字符。因此,最多可以有 26 个书签,分别名为 a 到z。
  • 使用标签:按 Escape 键,再按反撇号(`),然后输入书签引用字符。
6.查找、更新、查找下一个、重复
  • 搜索字符串模式:进入命令模式,输入/search_pattern(其中的 search_pattern 是字符串或正则表达式),然后按回车,向下查找。这样做就会找到与指定的模式匹配的第一个字符串。
7.切换大小写
  • 切换游标下的字母字符大小写:按 Escape,然后按波浪号键(~,需要shift配合),该字符会在小写和大写之间来回切换。
  • 从当前光标位置算起,波浪号前面输入一个数字,表示希望改变当前行多少个字母字符的大小写。例如,n + ~,针对当前数据行,从当前光标算起,表示希望切换n个字母字符的大小写
8.筛选
  • :! command(其中的 command 是要执行的 UNIX 命令),然后按回车,就可以在 shell 中执行命令。例如,:!pwd 显示编辑会话当前的工作目录。
  • 把文件的一部分作为标准输入发送给 UNIX 命令,并用产生的输出替换编辑缓冲区中的相同部分。例如,如果希望在vi 会话内对整个文件进行排序,可以按 Escape,输入 :1,$!sort 并按回车,这让vi 把从第一行到文件末尾($)的所有内容传递给 sort 命令,用输出替换指定的部分。
9. 保存文件部分内容  (保存当前编辑的文件的部分内容)
  • 输入 :start,endw file,
  • start 是当前文件中要保存的第一行,end 是要保存的最后一行,w表示希望写到另一个文件中(或者覆盖现有的文件),file 是指定的部分要保存到的文件。对于最后一行,可以使用$表示文件的末尾。可以在w后面使用两个大于号(>>)表示希望把内容追加到文件中而不 是覆盖文件
原文地址:https://www.cnblogs.com/think1988/p/4628137.html