Vim 编辑器提供了很多的特性,要想全部掌握它们很困难。然而,花费更多的时间在命令行编辑器上总是有帮助的。毫无疑问,和 Vim 用户们进行交流能够让你更快地学习新颖有创造性的东西。

注: 本文中用到的例子,使用的 Vim 版本是 7.4.52 。

1、 同时编辑多个文件

如果你是一名软件开发者或者把 Vim 作为主要的编辑器,那么可能很多时候你需要同时编辑多个文件。“紧跟following”是在同时编辑多个文件时可用的实用技巧。

不需要在多个 shell 界面中打开多个文件,你可以通过把多个文件的文件名作为 Vim 命令的参数从而在一个 shell 界面中打开多个文件。比如:

  1. vim 文件1 文件2 文件3

第一个文件(例子中的文件1)将成为当前文件并被读入缓冲区。

在编辑器中,使用 :next 或 :n 命令来移动到下一个文件,使用 :prev 或 :N 命令返回上一个文件。如果想直接切换到第一个文件或最后一个文件,使用 :bf 和 :bl 命令。特别地,如果想打开另外的文件并编辑,使用 :e 命令并把文件名作为参数(如果该文件不在当前目录中则需要完整路径做为参数)。

任何时候如果需要列出当前打开的所有文件,使用 :ls 命令。看下面展示的屏幕截图。

注意 ”%a” 表示文件在当前活动窗口,而 “#” 表示上一个活动窗口的文件。

2、 通过自动补全节约时间

想节约时间并提高效率吗?使用缩写吧。使用它们能够快速写出文件中多次出现、复杂冗长的词。在 Vim 中缩写命令写就是 ab 。

比如,当你运行下面的命令以后:

  1. :ab asap as soon as possible

文件中出现的每一个 asap 都会被自动替换为 as soon as possible ,就像你自己输入的一样。

类似地,你可以使用缩写来更正常见的输入错误。比如,下面的命令

  1. :ab recieve receive

将会自动更正拼写错误,就像你自己输入的一样。如果在一次特殊情况下你想阻止缩写展开或更正发生,那么你只需要在输入一个单词的最后一个字母以后按 Ctrl + V ,然后按空格键。

如果你想把刚才使用的缩写保存下来,从而当你下次使用 Vim 编辑器的时候可以再次使用,那么只需将完整的 ab 命令(没有起始的冒号)添加到 /etc/vim/vimrc 文件中。如果想删除某个缩写,你可以使用 una 命令。比如: una asap 。

3、 切分窗口便于复制/粘贴

有时,你需要从一个文件将一段代码或文本的一部分复制到另一个。当使用 GUI(图形界面)编辑器的时候,这很容易实现,但是当使用一个命令行编辑器的时候,这就变得比较困难并且很费时间。幸运的是, Vim 提供了一种高效、节约时间的方式来完成这件事。

打开两个文件中的一个然后切分 Vim 窗口来打开另一个文件。可以通过使用 split 命令并以文件名作为参数来完成这件事。比如:

  1. :split test.c

上面的命令将分离窗口并打开文件 “test.c”

注意到 split 命令水平分离 Vim 窗口。如果你想垂直分离窗口,那么你可以使用 vsplit 命令。当同时打开了两个文件并从一个文件中复制好内容以后,按 Ctrl + W 切换到另一个文件,然后粘贴。

4、 保存一个没有权限的已编辑文件

有时候当你对一个文件做了大量更改以后才会意识到你对该文件仅有 只读 权限。

虽然把文件关闭,获取权限以后再重新打开是一种解决方法。但是如果你已经做了大量更改,这样做会很浪费时间,因为在这个过程中所有的更改都会丢失。 Vim 提供了一种方式来处理这种情况:你可以在编辑器中在保存文件前更改文件权限。命令是:

  1. :w !sudo tee %

这个命令将会向你询问密码,就像在命令行中使用 sudo 一样,然后就能保存更改。

一个相关的技巧:在 Vim 中编辑一个文件的时候,如果想快速进入命令行提示符,可以在编辑器中运行:sh 命令,从而你将进入一个交互的 shell 中。完成以后,运行 exit 命令可以快速回到 Vim 模式中。

5、 在复制/粘贴过程中保持缩进

大多数有经验的程序员在 Vim 上工作时都会启用自动缩进。虽然这是一个节约时间的做法,但是在粘贴一段已经缩进了的代码的时候会产生新的问题。比如,下图是我把一段已缩进代码粘贴到一个在自动缩进的 Vim 编辑器中打开的文件中时遇到的问题:

这个问题的解决方法是 pastetoggle 选项。在 /etc/vim/vimrc 文件中加入下面这行内容:

  1. set pastetoggle=<F2>

然后当你在 插入 模式中准备粘贴代码前先按 F2 键,就不会再出现上图中的问题,这样会保留原始的缩进。注意,你可以用其他的任何键来代替 F2,如果它已经映射到了别的功能上。

结论

更进一步的提高你的 Vim 编辑器技巧的唯一方法是,在你日复一日的工作中使用命令行编辑器。留意那些耗时多的操作,然后尝试去寻找是否有编辑器命令可以很快地完成这个操作。

原文发布时间为:2017-01-26

本文来自云栖社区合作伙伴“Linux中国”

5 个针对有经验用户的 Vim 实用技巧相关推荐

  1. vim实用技巧(第二版)........持续更新ing

    全书共123个技巧,每天更新两个,计划两个月更新完. (目前更新完技巧39) vim实用技巧第二版全部教学内容 前言 第1章 Vim解决问题的方式  技巧1 认识 . 命令  技巧2 不要自我重复   ...

  2. Vim实用技巧_2.普通模式和插入模式

    下面介绍vim的几种常用模式的技巧 vim有4种模式:普通模式,插入模式,可视模式,命令模式 为什么要分这么多模式? 想一想我们平时常用的编辑工具word,应该是将上面4种模式融合在一起的:这种做法的 ...

  3. Vim实用技巧pdf

    下载地址:网盘下载 内容简介  · · · · · · vim是一款功能丰富而强大的文本编辑器,其代码补全.编译及错误跳转等方便编程的功能特别丰富,在程序员中得到非常广泛的使用.vim能够大大提高程序 ...

  4. Vim实用技巧高清完整版PDF中文

    Vim实用技巧高清完整版PDF是一本中文版的参考教材,该书适合想要学习和掌握 Vim 工具的读者阅读,有一定 Vim 使用经验的程序员,也可以参考查阅以解决特定的问题. 欢迎大家下载阅读学习:http ...

  5. Vim实用技巧:global命令

    :global命令结合了Ex命令与Vim的模式匹配这两方面能力.凭借该命令,可以在某个指定模式的所有匹配行上运行Ex命令.就处理重复工作的效率而言,global 命令是除点范式以及宏之外,最为强大的V ...

  6. vim实用技巧-笔记(第九章)

    vim实用技巧-笔记(第九章) 前言 我记得很早以前我就说过了,我是一个菜鸟,我写博客的主要目的不是为了别人,更多的是为了记录自己的成长过程.如果阁下认为我的行为是在划水的话,那我也不妨大方地承认. ...

  7. 《Vim实用技巧(第2版)》——1.4 执行、重复、回退

    本节书摘来自异步社区<Vim实用技巧(第2版)>一书中的第1章,第1.4节,作者:[英]Drew Neil(尼尔)著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  8. 《Vim实用技巧(第2版)》学习笔记:技巧12-双剑合璧,天下无敌

    <Vim实用技巧(第2版)>学习笔记:技巧12-双剑合璧,天下无敌 1. 操作符 + 动作命令 = 操作 d{motion}命令可以对一个字符.一个完整单词或一整个段落进行操作,它作用的范 ...

  9. 《Vim实用技巧(第2版)》——2.6 双剑合璧,天下无敌

    本节书摘来自异步社区<Vim实用技巧(第2版)>一书中的第2章,第2.6节,作者:[英]Drew Neil(尼尔)著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

最新文章

  1. pandas使用read_csv函数读取文件最后N行数据并保留表头、pandas使用read_csv函数读取网络url链接数据
  2. ESP32检测调制激光信号程序优化
  3. 安徽计算机中专学校有哪些,安徽2021年中专学校里面都有什么专业
  4. 51nod1008 N的阶乘 mod P(水题)
  5. primeNG DataTable中Templating ng-template标签报错
  6. android 半浮层框架,GitHub - Jodragon/AnyLayer: Android稳定高效的浮层创建管理框架
  7. 机器学习笔记(了解)
  8. java迷宫_java实现迷宫算法--转
  9. ubuntu安装python和pycharm_在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
  10. 无线wifi盒子用不用拉网线?
  11. Jetson Nano开发深度学习实践(六) :工作站(主机)装机-NVIDIA显卡驱动,Cuda,Cudnn
  12. 第九届“图灵杯”NEUQ-ACM部分汇总
  13. 主题 02:如何设计系统预案(Preplan)?
  14. BUU Web[33-36]
  15. java 多线程 并发 面试题_最常见的15个Java多线程,并发面试问题
  16. 网络安全保障之“三同步”
  17. 同花顺编程语言是基于c,同花顺编程语言
  18. 【渝粤教育】电大中专Office办公软件 (2)_1作业 题库
  19. python django及运维开发面试题总结
  20. 学完3D游戏建模,为什么我找到的工作薪资这么低?

热门文章

  1. 新 TMD 的二号人物
  2. spring mvc-REST
  3. VMware Workstation Pro 共享文件夾
  4. 接到三无产品的测试需求时怎么办
  5. 个人作业-Alpha项目测试
  6. springboot 使用 redis 管理session
  7. 第0周---python网络爬虫前奏
  8. 全美国的数据中心到底消耗了多少能源
  9. LoadRunner12使用教程(三)——Action迭代
  10. 深入javascript——构造函数和原型对象