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

Wesley13
• 阅读 793

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

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

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

1. 重映射 vim 的 ESCAPE 键

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

inoremap jj 

2. 重映射 Vim 的 Leader 键

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

nnoremap j VipJ

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

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

let mapleader = “,”

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

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")': ['', '', '<2-LeftMouse>'],
}
endif

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

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

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

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

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

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

6. Vim normal命令

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

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

7. Vim替换命令s

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

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

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

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

       技术成就梦想
   
       
       
       关注我们一起成长
  
      
      
      
 
     
     
     

    
    
    

    
    
    
 
     
     
     
  
      
      
      
   
       
       
       
    
        
        
        
          ▼ 
        
    
        
        
        
          更多精彩推荐,请关注我们 
        
    
        
        
        
          ▼ 
        
   
       
       
       
  
      
      
      
 
     
     
     

    
    
    

    
    
    
 
     
     
     
  
      
      
      
 
     
     
     

    
    
    生活不止眼前的苟且,还有课本里的诗和到不了的远方!

本文分享自微信公众号 - 释然IT杂谈(gh_ad4551519762)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Python 语法检查工具
1\.在vim中检查开始查到的是使用flakesvim(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.vim.org%2Fscripts%2Fscript.php%3Fscript_id%3D2441)这个vim插件,进入其githuab主页
Stella981 Stella981
3年前
DOIS 2019 DevOps国际峰会北京站来袭~
DevOps国际峰会是国内唯一的国际性DevOps技术峰会,由OSCAR 联盟指导、DevOps时代社区与高效运维社区联合主办,共邀全球80余名顶级专家畅谈DevOps体系与方法、过程与实践、工具与技术。会议召开时间:2019070508:00至2019070618:00结束会议召开地点:北京主办单位:DevOps
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这