Vim中不得不知的中级技巧(一)

很多人以为自己装了很多插件,就算是会用VIM了,事实上,VIM最精髓的不在于众多插件,而是在于基本的操作。基本的操作玩的溜,才能算是VIM高手。基本操作不熟练,装再多插件都只是会花拳绣腿的初级装逼党。下面的技巧可以帮助你从vim的初级法师晋升为中级法师。

0x00 字符串简单替换

有时候觉得某个变量名字取得不是很好,或者发现笔误写错单词了,希望给某个变量修改名字,这时候可以使用全局替换命令。这里涉及到几个命令:”:s”是替换(substitute)命令,”:g”表示全局(global),”c”表示确认。

  • 将本行的第一个abc替换(s)为efg:

      :s/abc/efg/
    
  • 将本行中所有(g)abc替换为efg:

      :s/abc/efg/g 
    
  • 在替换之前确认(c),可以单个确认,也可以全局确认

      :s/abc/efg/cg
    
  • 将文件内所有行的所有abc替换为efg:

      :%s/abc/efg/g 这里的%表示所有行
      :1,$s/abc/efg/g
    
  • 将文件内的第5行到10行的所有abc替换为efg:

      :5,10s/abc/efg/g
    
  • 替换不区分大小写(i):

      :s/abc/efg/ig 
    
  • 替换区分大小写(I):

      :s/abc/efg/Ig
    

在vim里面,还可以利用模式匹配来替换::g/pattern/s/old/new/g,这里第一个g表示对文件所有行替换,第二个表示对某行中所有匹配项替换。这里:g/abc/s//efg/g和之前的:%s/abc/efg/g效果相同。这里的pattern用来识别需要替换的行,然后将该行中的old替换为new。
当然也可以使用正则表达式来匹配,都说了是中级技巧,就不详细说了。

0x01“:x”与”:wq”区别

:x和:wq差别不是特别大,都是保存并退出。唯一不同的是,当文件内容没有任何改变,:x保存退出不会改变文件的时间戳,而:wq不管文件是否改变都回修改文件时间戳。

0x02 格式化代码

==,缩进当前行代码
gg=G,整个文件缩进调整
={,对代码块缩进
2G=10G,从第二行到第10行缩进

0x03 交换字符

xp,交换相邻两个字符
ddp,交换相邻两行

0x04 完成重复工作

如果你想插入80行abc,你可以使用80iabc<CR><ESC>完成工作。
当然你你可以使用 q<寄存器名a-z>iabc<CR><ESC>q 完成录制,然后执行80@<寄存器名>,这里寄存器名字可以是a到z的任何一个字符(vim里面有不同类型寄存器,各个类型寄存器用途不同)。这里的寄存器如@a是可以直接赋值的:let @a=“oabc”,因此如果熟悉的话,可以自己编写宏命令来完成。

0x05 文档查看

在单词上按大写K就可以查看该关键词的文档,这样要是不熟悉execl函数时可以直接按K查看manual。

0x06 查看二进制

:%!xxd,用户查看文件二进制
不要尝试去编辑它,在vim里面编辑二进制需要谨慎。

0x07 vim中折叠

在查看代码的时候,将不重要或者已经看过的代码隐藏起来是个不错的。vim中有六种折叠方式:

  • manual:vim定义的标准折叠
  • indent:根据缩进折叠
  • expr:根据正则表达式折叠
  • syntax:根据语法折叠
  • diff:以两个文件差异折叠
  • marker:根据预定义标记折叠

折叠命令有以下:

zA 递归切换折叠状态
za 切换一个折叠的状态
zo 递归打开折叠
zC 递归关闭折叠
zc 关闭一个折叠
zD 递归删除折叠
zd 删除一个折叠
zE 删除所有折叠
zj,zk 跳转到上一个、下一个折叠
zf 创建折叠,从当前行开始到下一次光标移动位置,如”zf15G”表示折叠到15行。在syntax折叠方式下可能不会准确地折叠到15行,而是会根据语法折叠,manual方式下才可以。
zF 创建折叠,使用方法“countzF”,表示向后折叠count行。syntax方式下有差异。

对于代码来说,根据语法来折叠才是合适的,设置方法:

:set foldable
:set foldmethod=syntax      

vim不是一朝一夕就能掌握的,需要在使用过程中慢慢摸索发现技巧,或者更直接地从参考书和文档中学习技巧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值