Vim基本操作命令及常用快捷键(三)

Vim使用的一些神奇的组合快捷键

xp左右交换光标所在的两个字符,ddp上下交换光标所在的行。nia重复输入a字符n次。:g/^s$/d删除只有空白的行。:%s/ */ /g把一个或者多个空格替换为一个空格。:%s/ *$//去掉行尾的所有空格。:%s/^/ / 在每一行头上加入一个空格。:%s/^[0-9][0-9] //去掉行首的所有数字字符。

在当前文档搜索一些内容

/word正向搜索word,?word反向搜索word。word也可以是一个正则表达式,例如/^[A-Z]搜索当前行的大小字母开头的内容。//或者??是重复搜索。n跳转到下一个复合的内容,N反向跳转。

基于多个文件的内容搜索

命令:vimgrep进行多文件内容搜索。例如,:vimgrep /beauty/ text.txt go.txt则表示在text.txt和go.txt两个文件中搜索beauty。代表当前文件下下的所有文件夹,所以/*.txt代表搜索在当前文件下搜索txt文档。要搜索的内容同样可用使用正则表达式进行。

搜索并替换内容

利用命令:%s/target/replacement/g进行搜索替换,:%s/target/replacement/gc进行全部搜索替换,g表示全局,即一行的多次替换。%代表对整个文档进行替换操作,此外,不使用%可用限定搜索范围,例如:2,20s/target/replacement/g即表示从第二行到第二十行进行搜索替换操作,另外也可以利用VIsual模式先进行选择确定搜索的范围然后执行。搜索的内容同样的符合正则表达,所以两点注意:

  • 如果替换and到or时需要使用单词限定,例如:%s/and/or/g的正确使用方式是:%s//or/g。
  • 如果要搜索的内容大小写不敏感,那么就需要设置:set ignorecase或者使用i,即:%s/target/replacement/igc,这里加上c是表示每次询问的意思。

搜索当前光标所在的单词

如果想搜索光标所在的单词(光标在当前单词之上或者之前),则可用直接在Normal模式之下利用或者#进行正向或者反向搜索。跳转同样的可用利用n或者N。要在单词中搜索包含当前字符,则利用g或者g#。

创建正则表达式

在搜索中,“.”可用指示任意的单字符,例如/.ow/ 可用搜索到cow或者xow等。可用使用字符限定范围搜索,例如/[cx]ow/就可用搜索到cow和xow、udnerxow等。如果是按顺序,则可用/[c-x]ow/或者/[1-5]/。可用使用/[^cx]ow/来搜索不包含c或者x开头的ow字符串。可用/[o+i]/来搜索oi、ooi、oooi等内容。

利用可以代表任意字符,例如/oi/则可以搜到ti、di、obti等等,这里的o代表可选的意思。利用/ing|ed/可以搜索到包含ing或者ed的词条。如果是/[inged]/那么将搜到包含i、n、g、e或d的词条,这将非常的多。

Vim的特殊表达:^表示行首,$表示行尾,d表示数字,D表示非数字,[x,y,z]代表各种选择条件,+表示重复一次或以上,s匹配空白字符,S匹配非空白字符等。例如/^s=uo/为从行的开头查找一个空白字符(可选),接着为一个大写字符,接着为o的词条。

% 地址范围符号,代表文件中的所有行,作用等同于地址范围 1,$。
. 与任意单字符(换行符除外)匹配,例如 y.s 可以匹配 yas y.s 或 y s 等等。
* 与前一字符的0次或多次出现匹配,例如 y*s 可以匹配 yys yyyyys 或 s 等等。
$ 与行尾匹配。
& 代表模式匹配中出现的字符串,例如 s/abc/&def 是把当前行的abc替换成abcdef 。
[] 匹配[]中出现的字符,例如[abc]匹配字符 a,b 或 c ,[a-zA-Z]匹配所有的英文字符。
( ) (和)之间出现的内容可以由num来替代。
123 替代(和)之间出现的内容。
u 将后续字符串的首字母大写。
{num} 与前一字符的num次出现匹配。

Vim中n代表新的一行,r回车字符,t对应TAB。

对长的行进行操作

可以借助设置:set wrap 或者:set nowrap进行转换。


除非特别声明,文章均为牛会飞的博客原创,遵循署名-非商业使用-相同方式共享授权协议
转载请注明出处: https://blogfei.com/vim-basic-shortcodes-three/

暂无评论