当前位置: 首页 > news >正文

VIM使用系列:位置跳转和块模式

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前面的系列中对于VIM中的函数及变量符号的跳转进行了简单的介绍,那也是在项目开发过程中用的最多的操作了。但是在这一个多月的项目开发中,我还是经常会需要在文件中进行各种非符号的跳转,更多的是位置的跳转和切换,这些操作渐渐地也就越来越频繁和熟练,在此记录一下以分享和备忘。

括号跳转

小括号的跳转:跳到句子的下头,句子以句号或者空行结束,英文中的句号为 “.”。

  • (          (左小括号) 移到这个句子的开头
  • )          (左小括号) 移到下一个句子的开头

中括号的跳转:跳到函数的开头或者结尾。

  • [[         跳往上一个函式的起始大括号
  • ]]         跳往下一个函式的起始大括号
  • []         跳往上一个函数的结束大括号
  • ][         跳往下一个函数的结束大括号

大括号的跳转:跳到段落的开头,段落以空行划分

  • {         (左大括号) 跳到上一段的开头
  • }         (右大括号) 跳到下一段的的开头

括号匹配

在码代码的体力劳动中,要全面兼顾总是不那么容易的,尤其是一些小细节,比如括号的匹配问题。在阅读别人的代码时,通过快速定位匹配的括号也是快速把握逻辑的捷径。之前我都是一行行地移动也人工找到匹配的括号的,直到有一天受够了这种低效率的操作方式,找到了快捷符号: %.

%  可以让光标从它当前所在的括号跳转到与它相匹配的括号上去, 对花括号和圆括号, 方括号都有效,是用来检查括号是否匹对的必备杀器,以后再也不用急躁找错括号了。

位置标记

在上面的各种跳转方式下,在项目中通过标记一处位置来进行跳转的方式用的真不多,我也是最近几天才开始用了几次。但是有的时候在长篇大论的文件中,对特殊位置的频繁定位有需求的话,这是一个不错的高效方法。

  • 对文件中光标所在的位置进行标记: m  <char> ,char是a-z中的任意一个字母,如: m a
  • 跳转到标记位置处: '  <char> ,char是上面定义好的标记符,如: ' a
  • 调回之前的位置处: ''   ,按两次英文的单引号,注意不是双引号。

一个标记或者叫书签,会一直存在,除非删除了标记的行或者之后又使用了相同的书签。

块模式

这里的块模式是指VIM中的VISUAL模式,在该模式下你可以进行一些文本块的选择、复制、剪切、删除和粘贴等操作,更类似于windows下的鼠标文本编辑操作。存在两种稍有不同的VISUAL模式:

  • VISUAL模式        在NORMAL模式下按字母 v 键进入,这是一般的文本块编辑模式
  • VISUAL  BLOCK模式     在NORMAL模式下按Ctrl+v 组合键进入,这是垂直文本框编辑模式,比较特殊和少见

进行上述模式后,都可以通过按 Esc 键返回NORMAL模式。

在VISUAL模式中,通过移动光标选择好文本块,以行为方向,VIM会高亮选中的文本,然后可以使用常用的VIM编辑命令,如y,d,p,>>等。在VISUAL  BLOCK模式中,通过移动光标可以进行垂直的文件块选择,就像windows中的按住Alt键后用鼠标进行文本选择,只能选择光标起始点和结束点为对角线的矩形区域内的文本。在这两种VISUAL模式下有一个实用的操作,那就是进行代码段的缩进对齐。

进入VISUAL模式后选择好需要进行对其的代码范围,然后按 = 键就OK了,这样选中的代码就自动地进行了合理的缩进和对齐。

转载于:https://my.oschina.net/shelllife/blog/134340

相关文章:

  • js字符串
  • oracle列表分区的ADD VALUES和DROP VALUES语句
  • python setattr,delattr()
  • 流程图控件FlowChart.NET组件的使用(二)
  • 企业架构研究总结(23)——TOGAF架构开发方法(ADM)之技术架构阶段
  • 图片闪烁效果
  • km itm监控启停命令记录
  • Bridge网络模式下Linux虚拟机和主机进行通信
  • IOS7为什么遭吐槽?
  • 学校电影服务器用 cwRsync实现windows下文件定时同步
  • 几段有用的代码
  • 正能量之项目经理的自我修养
  • [AX]AX2012 R2 出差申请和支出报告
  • java 多线程简介
  • [置顶] Android下实现自动关机的方法总结
  • 深入了解以太坊
  • 《Java编程思想》读书笔记-对象导论
  • 【刷算法】求1+2+3+...+n
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Github访问慢解决办法
  • js
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Vue实战(四)登录/注册页的实现
  • WePY 在小程序性能调优上做出的探究
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 近期前端发展计划
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前端性能优化--懒加载和预加载
  • 前端之Sass/Scss实战笔记
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 云大使推广中的常见热门问题
  • 在Unity中实现一个简单的消息管理器
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $GOPATH/go.mod exists but should not goland
  • $L^p$ 调和函数恒为零
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (搬运以学习)flask 上下文的实现
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (五)Python 垃圾回收机制
  • (转)setTimeout 和 setInterval 的区别
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)我也是一只IT小小鸟
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net core 连接数据库,通过数据库生成Modell
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .Net FrameWork总结
  • .Net Remoting(分离服务程序实现) - Part.3