gvim 快速编辑例子
1 准备工作
首先, 我们打开 VIM, 输入一段文本, 用于今天的演示:
2 查找替换
按几下 ESC 进入 Normal 模式, 输入以下命令: :%s/ /\r/g
。 回车后得到的效果如下:
解说: 这条命令的作用是, 将文章中所有的空格替换为回车 。
3 行的拼接
按几下 ESC 进入 Normal 模式, 然后输入这段命令: ggVG
。 gg
表示跳到文本开头 , V
表示进入行选择模式 , G
表示选择到文章末尾 。 通过这 3 条命令, 总共 4 个按键, 我们选中了整篇文章 。
然后, 按下冒号 :
进入命令模式 , 状态栏上出现: :'<,'>
字样, 在它后面输入 j
, 然后回车, 可以看到, 整篇文章又被拼接起来了 , 整个操作包括回车只按了 7 次键:
4 复制粘贴与重复动作
按几下 ESC 确认当前处在 Normal 模式下, 然后按 yy
, 即可将当前行复制到默认寄存器中 (相当于剪贴板) 。 然后按下 12p
, VIM 将执行粘贴动作 12 次, 屏幕上出现了 13 行这样的字符:
解说: 在 VIM 中, 复制和粘贴操作相当快捷。 另外, VIM 中大部分命令都可以通过在命令前加数字重复若干遍 。
5 列操作
把每一行的开头第一个字母改为大写。
按几下 ESC 确认当前处在 Normal 模式下, 然后按 gg
跳到第一行, 按下 Ctrl + v 进入列选择模式 (如果你按下 Ctrl + v 没能进入列选择模式: 编写自己的 _vimrc(在安装跟目录)! 如果你不会写, 请放一个空文件在那儿), 然后按 G
, 跳到文章最后一行, 此时你应该看到, 文本的第一列被选中了, 而且只选中了第一列。 按下 U
键, 可以看到, 每行的第一个字母都变为大写 了。 提示: 选中文本后按 u
可以将文本变为小写 , 选中文本后按 ~
可以翻转原有的大小写 。
然后, 我们在每行的前面 加上一个星号 。 按下 gg
跳到第一行, 按 Ctrl + v 进入列选择模式, 再按 G
, 选中全文的第一列, 然后按 I
, 进入列插入状态 , 输入星号 *
, 再按下 ESC , 你会看到, 所有行之前都出现了一个星号:
解说: 另外, 列选择后按 x 删除 被选中的块, 可以批量地解除注释。
6 宏的录制
接下来, 我们要将文本的偶数行修改为: This is another test
。 由于所有的偶数行都要进行同样的操作, 因此我们把这个操作录制下来, 然后重复播放若干遍, 就能很快地完成这项工作了。
首先, 按几下 ESC 确认处在 Normal 模式下, 再按下 gg
跳到第一行, 准备开始操作。 我们首先按下 q
键, 然后再按一个其它字母 , 将这个宏录制 到该字母对应的寄存器 下。 例如我们这里使用 m
寄存器, 则按 qm
。 此时 VIM 状态栏出现“recording” 字样, 表明已经进入了录制状态 。
然后, 我们把第二行的 a
修改为 another
。 首先按 j
进入第二行 , 然后按 $
跳到行末 , 再按两下 b
往前跳两个单词 , 此时光标停在字母 a
上。 然后我们输入caw 删除 a
并进入插入状态, 然后输入 another
, 按 ESC 回到 Normal 状态, 按 j 进入下一行, 整个操作步骤就完成了。 最后, 我们再按一下 q
, 结束该宏的录制。
接下来我们播放这个宏, 完成整个操作步骤。 在键盘上输入 1000@m
, 表示将 m 寄存器里的宏播放 1000 次, 马上可以看到, 文章中所有偶数行的 a
都变成了 another
。
解说: 虽然我们指定播放 1000 次 , 但事实上, 执行到第 6 次的时候, 光标挪到了屏幕最下方, 于是执行过程就自动停止了。 因此, 在批量操作的时候, 我们可以指定足够大的数字, 而不用担心出现问题。
另外, 修改 a
的时候, 我们跳到行末后再使用 b
命令以单词为单位跳转, 而没使用 h
一个字母一个字母往回挪, 我们使用 caw
修改整个单词 , 而不使用 s
命令删除单个字母并进入 Insert 模式 。 这些细节可以保证录制得到的宏更具有一般性。
7 点命令
接下来, 我们在每行的末尾加上一个感叹号 !
。
由于每行长度不同, 我们无法使用块选择方式 批量尾部添加感叹号。 使用宏录制的方式是可以做到这点的, 但操作稍嫌繁琐了一些。 使用点命令, 可以非常方便地做到这一点。
先按几下 ESC 确认当前出于 Normal 模式, 然后使用 gg
跳到第一行, 按 A
进行行尾插入 , 输入 !
, 然后按下 ESC 回到 Normal 状态, 第一行的感叹号就添加完毕了。
然后, 我们按 j
进入第二行 , 再按 .
, 可以看到, 第二行尾部也出现了感叹号。 反复按 j.j.j.
, 直到每一行尾部都添加了感叹行为止。
解说: 点命令 的作用是, 重复最近一次所做的编辑操作 。 由于在第一行里做的操作是行尾添加, 因此在第二行重复这个动作的时候, 也会在行尾添加同样的字符。 点命令功能不如宏强大, 但它使用起来比宏简便, 因此也有着广泛的用途。
gvim 快速编辑例子的更多相关文章
- 在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件
在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件 开源程序 浏览:29555 2013年05月02日 文章目录[隐藏] 常见的工作流程 SFTP 安装和使用方法 第一步: ...
- Git Bash下实现复制粘贴等快速编辑功能
在windows下使用Git Bash会经常用到选中.复制.粘贴等功能,但是一般用的方法会很复杂,笔者经过查阅一些资料,特整理一些常见编辑功能的实现方法. (1)默认方法: 单击左上角的logo ic ...
- C#下控制台程序窗口下启用快速编辑模式运行线程会阻止线程运行
最近做一个小的功能,使用C#控制台程序开启一个线程进行无限循环没5秒处理一次程序,发现控制台窗口在开启快速编辑模式情况下,进行选择程序打印 出来的文字后发现线程不走了,将快速编辑模式去除后,线程就不会 ...
- 在C#中,Windows Console控制台 设置控制台标题、禁用关闭按钮、关闭快速编辑模式、插入模式
设置控制台标题 禁用关闭按钮 关闭快速编辑模式 关闭插入模式 设置控制台标题.禁用关闭按钮 #region 设置控制台标题 禁用关闭按钮 [DllImport("user32.dll&quo ...
- PathMarker:命令行快速编辑跳转工具(配合git,find等)
简介 当使用git, find等工具时,一般需要进一步打开文件或跳转目录. 通常的做法是使用鼠标复制黏贴,或者手工输入. PathMarker提供一种快速通过标号,编辑相关文件,跳转相关目录的方法,提 ...
- Emmet:一个Html/Css快速编辑神器的插件
一.介绍:Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度 二.使用 ...
- Windows下使用Sublime text3快速编辑Linux文件,写Shell
所需要配合的工具是WinSCP 添加完毕之后直接在目录下双击要编辑的shell脚本文件,即可弹出Sublime Text的编辑器 然后咱通过Putty看看Linux虚拟机上的文件有没有发生变化
- phpstorm使用zen coding 快速编辑补全html/css代码
百科定义: 使用仿CSS选择器的语法来快速开发HTML和CSS ——由Sergey Chikuyonok开发. Zen Coding由两个核心组件组成:一个缩写扩展器(缩写为像CSS一样的选择器)和上 ...
- webstorm的live templates快速编辑功能,让你的css JS代码书写速度飞起来
前言: Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码, 大大提高了HTML/CSS代码编写的速度,比如下面 ...
随机推荐
- Qt之Qprocess
QProcess 可用于完成启动外部程序,并与之交互通信. 一.启动外部程序的两种方式 1)一体式:void QProcess::start(const QString & program,c ...
- C#转VB.NET
这个不能用了 http://www.developerfusion.com/tools/convert/csharp-to-vb/ 搜索几十分钟才找到另一个桌面版的,不怎么好用! http://www ...
- linux思维导图
- args[0]
java程序有一个主方法,是这样的public static void main(String [] args)你说的args[0]就是你用命令行编译运行java程序时,传入的第一个参数,比如你运行一 ...
- JavaScript高级程序设计 读书笔记 第二章
<script>元素 直接在页面中嵌入JavaSript代码或包含外部JavaSript文件. 在代码中任何地方不能出现</script>,可通过转义字符'\'解决. 在XHT ...
- PHP三元运算符 isset($_GET['id']) ? $_GET['id'] : ”
$id = isset($_GET['id']) ? $_GET['id'] : ''; ?> 这是一个php的三元运算符 (条件) ? (值1):(值2); 解释:如果条件成立(为真),则执行 ...
- Java SE 基础:注释
Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...
- spring定时任务(转载)
在springMVC里使用spring的定时任务非常的简单,如下: (一)在xml里加入task的命名空间 xmlns:task="http://www.springframework.or ...
- 将自己库添加Cocoapods支持
给库添加Cocoapods支持, 使这个工具使用起来更加方便, 更好的使用Cocoapods, 助力iOS程序开发, 下面进入正题, 想要实现这个过程, 绝对不虚此读. 首先写好一个要添加Cocoap ...
- Python的SublimeText开发环境配置
1.完成Python的默认安装之后要设置环境变量,系统环境变量Path中加入Python的安装目录";C:/Python27" 2.配置Python编译环境,修改[C:\Progr ...