本文章原创首发于公众号:编程三分钟 ,文末二维码。

文本编辑、跳转、删除、复制、替换这些操作用vim确实是快;但是好像仅仅是这样根本不能说服我vim超过鼠标的地方。

花点时间弄熟这些,除了炫技意外,主要为了防止深夜被拉起来救火,机房还不能远程,连夜打车到了地方,却发现服务器没有图形化界面,这个时候要是脚本写的熟,vim操作6几下修复完了,能尽量降低损失,也能睡个好觉了。

高级功能入门

常用操作在之间的文章我们已经已经掌握了,接下来就要搞一点高级操作,基本谁看见都要感叹一声“你vim怎么这么6!。

  • 同时修改多个文件、快速在文件之间切换
  • 编辑多个文档时分屏操作
  • 批量注释多行代码、修改配置、区域复制删除

多文件的编辑

同时编辑两个文件1.txt,2.txt

vim 1.txt 2.txt

查看同时打开了哪些文件 :ls,其中%a表示正在编辑的文件。

在文件之间切换 :n , :N

直接切换到想要编辑的文件 :b 1.txt

当然了我们为什么跳来跳去,因为这可以完成多个文件之间复制粘贴等组合操作。

分屏

创建分屏

:sp 2.txt 打开新的水平分屏(上下)视窗来编辑2.txt

:vsp 2.txt打开新的垂直分屏(左右)视窗来编辑2.txt

分屏跳转与移动分屏

我先打开了三个文件,1.txt 2.txt 3.txt

现在我分别跳转到各个文件中,删除文件内容。

普通模式下Ctrl+w j移至下面视窗

普通模式下Ctrl+w k 移至上面视窗

普通模式下Ctrl+w h 移至左边视窗

普通模式下Ctrl+w l 移至右边视窗

现在我垂直打开了三个文件,使用以下命令移动视窗,先把文件3从最左边移动到最右边,再移动下最下边

普通模式下Ctrl+w J将当前视窗移至下面

普通模式下Ctrl+w K 将当前视窗移至上面

普通模式下Ctrl+w H 将当前视窗移至左边

普通模式下Ctrl+w L 将当前视窗移至右边

只要位于相应视窗,:q :wq q!退出就可以;wqaqa!全部退出

可视模式

可视模式分为三种,也是vim的精髓。分别是行,矩形区域选择,字符段落选择。

和鼠标选择类似,进入可视模式加定位符号就可以快速跳转到想选择的范围,选中以后再进行复制,删除等操作。

行选择

行选择 Shift+v(小写) , 整行选取,可以上下移动光标选更多的行,再按一次 Shift+v 就可以取消选取。

如下,进入行选择模式,输入4G,跳转到第四行,d删除所选区域。

矩形区域选择

矩形区域选择Ctrl+v(小写),按区域选取,可以上下左右移动光标选更多的区域,再按一次 Ctrl+v就可以取消选取。

如下:选择所有的行和第一列所在在区域,shift+i进入插入模式,插入#,双击两次esc,批量注释。然后重复选择动作,输入x删除所选区域。

字符选择(段落选择)

字符选择 v(小写),可以移动光标,光标走过的地方就会选取。再次按下v后就会取消选取。

如下:v$选中192.168.1.2退一格为了不选中换行符,到第一行粘贴ip再选中不需要的ip删除掉。

可视化模式和定位符结合使用效果最佳!

小结

同时编辑多个文件: vim 1.txt 2.txt, 切换文件 :n:N:b 1.txt

分屏 :sp 2.txt  :vsp 2.txt,跳转Ctrl+w h|j|k|l 移动分屏位

Ctrl+w H|J|K|L

可视模式 Shift+vCtrl+vv

vim命令比较多,这里只列举最有用的,足以应对全部的场景了,记的越多速度越快!

vim 高级功能的更多相关文章

  1. (大数据工程师学习路径)第二步 Vim编辑器----高级功能入门

    一.多文件编辑 1.使用vim编辑多个文件 编辑多个文件有两种形式,一种是在进入vim前使用的参数就是多个文件.另一种就是进入vim后再编辑其他的文件. 同时创建两个新文件并编辑 $ vim 1.tx ...

  2. vim 高级使用技巧

    前言:逃离windows有很长时间了,特别是当今android盛行的时代,我们没有理由不选择ubuntu作为编译开发android之首选.其实操作系统只是我们使用的一个工具, windows也好lin ...

  3. vi/vim高级命令集粹

    vi/vim高级命令集粹 (ctrl +v过来 留着以后看) 1.交换两个字符位置 xp 2.上下两行调换 ddp 3.把文件内容反转 :g/^/m0/ (未通过) 4.上下两行合并 J 5.删除所有 ...

  4. Xen之初体验:XenMotion、 StorageMotion、Site Recovery、Power Management 各种新、高级功能免费

    Xenserver 的新版本6.2现在已经全面开源,省掉了原有的序列号,也能免费体验曾经标题中的付费高级功能. 安装镜像:http://downloadns.citrix.com.edgesuite. ...

  5. MVC5 Entity Framework学习之Entity Framework高级功能(转)

    在之前的文章中,你已经学习了如何实现每个层次结构一个表继承.本节中你将学习使用Entity Framework Code First来开发ASP.NET web应用程序时可以利用的高级功能. 在本节中 ...

  6. C#高级功能(四)扩展方法和索引

    扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.扩展方法被定义为静态方法,但 ...

  7. C#高级功能(三)Action、Func,Tuple

    Action和Func泛型委托实际上就是一个.NET Framework预定义的委托,3.5引入的特性.基本涵盖了所有常用的委托,所以一般不用用户重新声明. Action系列泛型委托,是没有返回参数的 ...

  8. C#高级功能(二)LINQ 和Enumerable类

    介绍LINQ之前先介绍一下枚举器 Iterator:枚举器如果你正在创建一个表现和行为都类似于集合的类,允许类的用户使用foreach语句对集合中的成员进行枚举将会是很方便的.我们将以创建一个简单化的 ...

  9. C#高级功能(一)Lambda 表达式

    Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数. Lambda 表达式对于编写 LINQ ...

随机推荐

  1. 佳木斯集训Day6

    T1还是个找规律啊,记下b的个数,然后直接*2%10000000009就好了 #include <bits/stdc++.h> #define mo 1000000007 using na ...

  2. Qt基于sqlite数据库的管理小软件

    闲来无事,写了一个基于sqlite的数据库管理小软件. 先上图 中心思想就是: 创建一个数据库 然后每一个分组对应一个数据表 然后遍历该数据表.将名字以treewidgetItem显示出来.添加删除实 ...

  3. python案例:使用if语句实现一个猜拳游戏

    任务要求: 在控制台中提示输入石头.剪刀.布,按回车键,然后给出游戏结果. 分析: 我们知道在游戏规则中,石头克剪刀,剪刀克布,布克石头.但是这在计算机中并不是很好直接的表示,因此我们分别用0.1.2 ...

  4. soap天气查询

    public class MainActivity extends AppCompatActivity { private TextView tvContent; @Override protecte ...

  5. 8.14 day32 TCP服务端并发 GIL解释器锁 python多线程是否有用 死锁与递归锁 信号量event事件线程q

    TCP服务端支持并发 解决方式:开多线程 服务端 基础版 import socket """ 服务端 1.要有固定的IP和PORT 2.24小时不间断提供服务 3.能够支 ...

  6. 实测win10 efi启动及centos7双系统引导顺序修改

    安装win10 安装win10过程中,系统自动建立esp分区,分区格式为FAT16,目录如下 1,EFI/Boot文件夹保持不动 删除 EFI/Microsoft/boot/ 文件夹下面除BCD文件外 ...

  7. Java虚拟机详解(五)------JVM参数(持续更新)

    JVM参数有很多,其实我们直接使用默认的JVM参数,不去修改都可以满足大多数情况.但是如果你想在有限的硬件资源下,部署的系统达到最大的运行效率,那么进行相关的JVM参数设置是必不可少的.下面我们就来对 ...

  8. 关于在taro使用wx.parse那些事

    好久不见,好久没更新博客,最近工作也比较忙,今天在使用解决富文本的时候遇到两个bug,由于第一次使用wx.parse经验不足,走了很多弯路,今天特地把自己修复bug的感想分享一下,希望能帮助更多的小伙 ...

  9. windows--OSError: [Errno 22] Invalid argument: '\u202aE:/desk/Desktop/test.txt' 读取文件的坑

    准备打开文件时,报了如下错误: 在路径中出现了这个Unicode 202a字符,导致了这个错误. 这玩意是哪里来的? 复制windows文件属性的时候复制下图中的路径而来的. 解释: 这个字符的含义是 ...

  10. Linux下各目录及其作用

    目录及其作用 /:根目录,一般根目录下只存放目录,不要存放件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中 /bin: /usr/bin: 可执行二进制文件的目录,如 ...