例如下面一段代码:

现在要统一缩进6个tab,在UltraEdit里首先要选中文本,然后按6次tab,VIM中的操作是:首先按V(shift+v)进入行visual模式,然后按7次j选中这段文本(或者7j也行),然后按“6>”(shift+.),如果不确定几个tab,可先>一次,这时自动退出了visual模式,再次缩进不需要重复上述操作,只要按点号(“.”,重复前次命令)即可。


2013-01-10更新:上面的方法太麻烦了,gg>G即可。如果只缩进第2~6行:2G>6G

下面的代码vim有更智能的缩进方法:

public static int rank(int key, int[] a) {
int lo = 0;
int hi = a.length - 1;
while (lo <= hi) {
// Key is in a[lo..hi] or not present.
int mid = lo + (hi - lo) / 2;
if (key < a[mid]) hi = mid - 1;
else if (key > a[mid]) lo = mid + 1;
else return mid;
}
return -1;
}

假设光标在while循环内的某处,用>aB就可以缩进,<aB反缩进,其中a表示包括分隔符(这里是{和}),B表示block,即代码块(参考http://www.viemu.com/a-why-vi-vim.html)。

上面的方法移动整个代码块,如果只想把嵌套部分向内缩进,将光标放在块内的任意行首,然后用>iB,重复这个缩进动作用“.”命令。


2013-10-28更新:

上面的方法是手工缩进,但vim支持大部分编程语言的自动缩进(用"="键),即根据打开文件的扩展名决定缩进方法,上面的缩进一条指令搞定:ggvG=

与手工缩进相比,自动缩进受文件扩展名的限制,例如无法在xml文件的buffer里修改C代码的缩进;

最新文章

  1. effective java —— 终结方法守卫者
  2. ProcessOn
  3. Android横竖屏切换重载问题与小结
  4. 高大上的uGUI正式版发布了
  5. InputStream复用,mark和reset
  6. WKWebView API精讲(OC)
  7. MySQL修改约束
  8. js禁止从浏览器缓存读取消息
  9. opencv 手写选择题阅卷 (三)训练分类器
  10. 当mysql遇上PHP
  11. CentOS 7下GitLab搭建及配置
  12. python爬虫学习之Scrapy框架的工作原理
  13. Servlet----------在使用doGet()和doPost()是如何处理中文乱码
  14. TCP与UDP各自优缺点与区别
  15. linux安装Anconda
  16. 查看library的依赖树
  17. 机器学习之路:python支持向量机回归SVR 预测波士顿地区房价
  18. Oracle中查询表字段基本信息、主键、外键(整理)
  19. try...finally的妙用
  20. Android 框架学习3:从 EventBus 中学到的精华

热门文章

  1. easyui的combobox的onChange事件的实现
  2. Kotlin Coroutine(协程): 一、样例
  3. 今日英语 词组——come together
  4. windows下命令
  5. go logrus实战应用
  6. Pycharm上python运行和unittest运行两种执行方式解析
  7. Kubernetes全栈架构师(二进制高可用安装k8s集群部署篇)--学习笔记
  8. python使用笔记25--深拷贝、浅拷贝
  9. 传统.NET 4.x应用容器化体验(2)
  10. JAVA 中日志的记录于使用