提高工作效率的 7 个 Vim 使用技巧!

点击上方 "程序员小乐"关注, 星标或置顶一起成长

每天凌晨00点00分, 第一时间与你相约

每日英文

No one can go to bear for you, no one can get to get you strong.

没有人能够去替你承受,也没有人能够拿得走你的坚强。

每日掏心

有时候,虽然能想明白,但心里就是接受不了。大道理人人都懂,小情绪却难以自控。

来自:ITPUB | 责编:乐乐

链接:urlify.cn/2EZz2a

程序员小乐(ID:study_tech)第 951 次推文  图源:百度

往日回顾:计算机网络基础知识总结

     

   正文   

vim 是个非常高效、非常好用的工具,很多人一旦开始使用 Vim 之后就再也无法自拔。然而, Vim 仍然有其自身缺陷,对于普通用户来说,很难在入门的时候就体会到Vim的所谓高效性。

本文介绍7个提高你工作效率和生产力的Vim使用技巧,作为你体验使用Vim进行高效操作的入门级教程。

1. 重映射 vim 的 ESCAPE 键

vim 有多个模式并不是什么大问题,但在模式间切换的时候会感觉很糟。ESC 键有点远,这太麻烦了。当我面对新的 vim 环境时,所做的第一件事就是添加如下映射:

inoremap jj <ESC>

2. 重映射 Vim 的 Leader 键

如果你不熟悉 leader 键,也不知道它能为你做什么,那你就从这开始了解吧。它本质上是作为你快捷键的激活键,你可以自定义用哪个键作为你的 leader 键。所以,你可以:

关注公众号程序员小乐回复关键字“Java”获取Java面试题和答案。

nnoremap j VipJ

这可以让你按下 leader 键结合大写 ‘j’ 后可视化的选择整段并加入行。

我个人用 ‘,’ 键作为我的leader键,这样我可以用 ‘,’ 激活我所有的快捷键,然后通过 ‘jj’ 退出插入模式。你可以在 .vimrc中像这样映射:

let mapleader = “,”

3. 光标移动

Vim的最大好处就是几乎所有的操作都是通过主键区的键位进行操作,双手不用离开键盘主区

◎h、j、k、l,分别是左下上右移动光标,前面加上n,可以重复移动多次,例如3j就可以往下移动3行

◎^,跳到一行的开始

◎$,跳到一行的结束

◎gg,跳到文本的第一行

◎G,跳转到文本的最后一行

◎nG或者ngg,跳转到第n行,例如:10G,跳转到第10行;20gg,跳转到第20行

4. 提高 Git 工程中 Ctrl-P 的执行效率

将下面的内容添加到你的 .vimrc 文件中(配置使用来使用 git 或 silver 查找工具来自动补全):

et g:ctrlp_use_caching = 0
if executable( ag )
   set grepprg=ag --nogroup --nocolor

   let g:ctrlp_user_command =  ag %s -l --nocolor -g ""
else
 let g:ctrlp_user_command = [ .git ,  cd %s && git ls-files . -co --exclude-standard ,  find %s -type f ]
 let g:ctrlp_prompt_mappings = {
     AcceptSelection("e") : [ <space> ,  <cr> ,  <2-LeftMouse> ],
    }
endif

注:建议使用 vim-scripts/gitignore 插件。

5. 提高单元测试执行效率

我用 vim-vroom 插件以及相应的 tmux 配置来进行我的测试。

vim-room 缺省使用r 执行测试,由于我已将 Leader 映射为,因此我通过r 来运行测试工具。

由于测试在 tmux 的单独窗口运行,因此我可以边看测试进展共修订我的代码。

6. Vim normal命令

Vim normal 命令可以在命令行模式执行普通模式下的命令,当normal命令与Vim可视化模式结合时,只需很少的操作就能完成大量重复性工作。

关注公众号程序员小乐回复关键字“offer”获取算法面试题和答案。

比如在编辑Markdown文件时想在某些行前面都加上 - 让普通文本行变成无序列表,可以先用 V 选中这些行,然后按 : <, >normal I- 并回车即可实现。

7. Vim替换命令s

Vim命令行模式下使用 :substitute 命令 (缩写形式 s ) 可以将指定范围内的字符替换成其他目标字符,实现同时处理多个目标行的操作效果。

例如,假设希望将Vim当前打开文件的所有行尾多余的空格删除,可以使用Vim命令 :%s= *$==。

其中,% 表示整个文件范围, *$ 表示以0个或多个 * 结尾的文本行。

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。欢迎加入程序员小乐技术交流群,在后台回复“加群”或者“学习”即可。

猜你还想看

阿里、腾讯、百度、华为、京东最新面试题汇集

教你设计一个超牛逼的本地缓存!

Netty是个啥?简单来说就这!

面试官:为什么 wait() 方法需要写在while里、而不是if? 我回答不上来

关注订阅号「程序员小乐」,收看更多精彩内容

嘿,你在看吗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值