vim 高级功能
本文章原创首发于公众号:编程三分钟 ,文末二维码。
文本编辑、跳转、删除、复制、替换这些操作用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!
退出就可以;wqa
或qa!
全部退出
可视模式
可视模式分为三种,也是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+v
、Ctrl+v
、v
vim
命令比较多,这里只列举最有用的,足以应对全部的场景了,记的越多速度越快!
vim 高级功能的更多相关文章
- (大数据工程师学习路径)第二步 Vim编辑器----高级功能入门
一.多文件编辑 1.使用vim编辑多个文件 编辑多个文件有两种形式,一种是在进入vim前使用的参数就是多个文件.另一种就是进入vim后再编辑其他的文件. 同时创建两个新文件并编辑 $ vim 1.tx ...
- vim 高级使用技巧
前言:逃离windows有很长时间了,特别是当今android盛行的时代,我们没有理由不选择ubuntu作为编译开发android之首选.其实操作系统只是我们使用的一个工具, windows也好lin ...
- vi/vim高级命令集粹
vi/vim高级命令集粹 (ctrl +v过来 留着以后看) 1.交换两个字符位置 xp 2.上下两行调换 ddp 3.把文件内容反转 :g/^/m0/ (未通过) 4.上下两行合并 J 5.删除所有 ...
- Xen之初体验:XenMotion、 StorageMotion、Site Recovery、Power Management 各种新、高级功能免费
Xenserver 的新版本6.2现在已经全面开源,省掉了原有的序列号,也能免费体验曾经标题中的付费高级功能. 安装镜像:http://downloadns.citrix.com.edgesuite. ...
- MVC5 Entity Framework学习之Entity Framework高级功能(转)
在之前的文章中,你已经学习了如何实现每个层次结构一个表继承.本节中你将学习使用Entity Framework Code First来开发ASP.NET web应用程序时可以利用的高级功能. 在本节中 ...
- C#高级功能(四)扩展方法和索引
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.扩展方法被定义为静态方法,但 ...
- C#高级功能(三)Action、Func,Tuple
Action和Func泛型委托实际上就是一个.NET Framework预定义的委托,3.5引入的特性.基本涵盖了所有常用的委托,所以一般不用用户重新声明. Action系列泛型委托,是没有返回参数的 ...
- C#高级功能(二)LINQ 和Enumerable类
介绍LINQ之前先介绍一下枚举器 Iterator:枚举器如果你正在创建一个表现和行为都类似于集合的类,允许类的用户使用foreach语句对集合中的成员进行枚举将会是很方便的.我们将以创建一个简单化的 ...
- C#高级功能(一)Lambda 表达式
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数. Lambda 表达式对于编写 LINQ ...
随机推荐
- Usaco Training [2.1] The Castle 搜索
传送门 题目的输出的4个信息 前两个很容易,dfs,bfs都可以,图怎么建都可以 后两个在搜索的时候记录belong[i][j]和已有的size即可 代码应该比不少题解清晰吧 #include < ...
- Java中的时间二三事
实习过程中对于时间的处理有很多,有的还涉及到从数据库取出时间,所以做一些总结,想到那先写到哪,慢慢补充. 首先最常见的是java.util中的Date类,这个类封装了当前的日期和时间,它实际是计 ...
- python多线程同步实例分析
进程之间通信与线程同步是一个历久弥新的话题,对编程稍有了解应该都知道,但是细说又说不清.一方面除了工作中可能用的比较少,另一方面就是这些概念牵涉到的东西比较多,而且相对较深.网络编程,服务端编程,并发 ...
- git常用指令整理
git常用指令一览表 GIT指令 说明 git add . 将全部文件的内容加到Git索引以便执行commit. 这个指令不会检查文件夹中是否有文件被删除. 要注意的是,只有执行" git ...
- 使用python画2D线条
"""用于验证整体趋势正确性,不做关闭操作时保持显示""" #!python3 #-*- coding:utf-8 -*- import m ...
- 通过注解实现通用导出Excel
Javaweb开发中数据的导入导出很常见,每次我们都需要写很多代码,所以我就在想能不能写一些通用的方法,之前已经在网上 整理过一些通用的方法,最近在网上看到一位牛人封装的更加简介,自己拿过来整理了一下 ...
- 解决H5微信浏览器中audio兼容-- 背景音乐无法自动播放
我们知道,ios 在safari浏览器中,audio标签不能在没有用户交互的情况下自动播放或有js直接控制播放,这是系统限制的一些原因. 但是背景音乐在微信浏览器可以设置自动播放,config配置一下 ...
- websql操作类封装
在之前,我写了一个websql的封装类库,代码如下: (function(win) { function smpWebSql(options){ options = options || {}; th ...
- 数据算法 --hadoop/spark数据处理技巧 --(13.朴素贝叶斯 14.情感分析)
十三.朴素贝叶斯 朴素贝叶斯是一个线性分类器.处理数值数据时,最好使用聚类技术(eg:K均值)和k-近邻方法,不过对于名字.符号.电子邮件和文本的分类,则最好使用概率方法,朴素贝叶斯就可以.在某些情况 ...
- Java中不得不谈的值传递和地址传递
个人的一些认识,希望能对初学Java的你,或者困惑于方法参数传递的你祈祷一丝帮助! 下面是一些作者的个人观点,如果有错,欢迎各位大牛指出错误,灰常感谢您的观看与支持... -------------- ...