Vim技能修炼教程(7) - 可视模式
可视模式
可视模式是与正常模式、插入模式一起并列的模式。它的作用就像图形化编辑器下用鼠标来选择一个块。
在vim下,使用正常模式和ex命令,连搜带跳行的,未必就比用鼠标慢。
我们先做一个例子找找感觉,体验一下vim中可视模式的用法。
我们假设这样一段代码:
#include <stdlib.h>
int main(int argc, char* argv[])
{
return 0;
}
假设我们想把这段代码全注释掉,该如何做?
1. 在第一行首先用Ctrl-v进入列选择模式
2. G跳到最后一行
3. I//<空格>
就变成了下面这样:
// #include <stdlib.h>
// int main(int argc, char* argv[])
// {
// return 0;
// }
是对所有行统一起作效果。
我们尝试再把注释删掉。
1. 第一行行首,0Ctrl-v
2. G跳到最后一行
3. 2l,向右移动两次
4. x, 将这一块全删除
还有更神奇的,假如我们想在每句话后面添点东西如何做?
我们来看看vim的黑科技:
1. 2G
2. 0
3. Ctrl-V
4. G
5. $
6. A // test
于是这段代码变成了这样:
#include <stdlib.h>
int main(int argc, char* argv[]) // test
{ // test
return 0; // test
} // test
$命令在列块模式下成为黑科技,虽然每行长短不一,但是它仍然是个块。
可视模式的三种模式
可视模式的三种子模式是:
* v: 字符模式
* V: 行模式
* Ctrl-v: 列块模式
另外,gv命令可以重做上次的选区,不分模式。
切换端点
在选择的时候,有时候会发现,移动到终点之后,起点选错了。这时我们可以用o命令切换端点,我们再回去移动到正确的起点就可以了。
可视模式下的a和i
在可视模式下,a和i已经失去了切换到插入模式的功能,主要被用于aw, iw, as, is之类的文本对象之中。
要切换到插入模式,I和A命令还是可以正常使用的。
Vim技能修炼教程(7) - 可视模式的更多相关文章
- Vim技能修炼教程(10) - 代码跳转
程序员功能 前面我们用了5讲的篇幅来讲基本编辑的基本功:第4讲是基本操作,第5讲是操作符,第6讲行编辑ex命令,第7讲可视模式,第8讲多窗口,第9讲缓冲区和标签页. 从这一讲开始,我们从通用功能向程序 ...
- Vim技能修炼教程(2) - 语法高亮速成
语法高亮速成 我们继续在人间修行Vim技能之旅.上一次我们学习了如何通过vundle安装插件,这次我们迅速向写插件的方向挺进. 我们先学习一个最简单的语法高亮插件的写法. 语法高亮基本上是由三部分组成 ...
- Vim技能修炼教程(4) - 基本功
基本功 前面我们学会了插件管理器和如何实现语法高亮,相信大家已经从中体会到了vim插件的强大功能.现在,是时候回来补一补基本功了. Vi有三种主要模式,正常模式,插入模式和可视化模式.正常我们推荐的方 ...
- Vim技能修炼教程(8) - 多窗口
多窗口 如果一个vim只能开一个窗口,那肯定是有点low.尤其是写代码的时候,打开多个文件是经常的需求. 速成教程 横着切成两个 :split 文件名 上下切换窗口 Ctrl-W加上上下键,可以实现上 ...
- Vim技能修炼教程(3) - 语法高亮进阶
语法高亮进阶 首先我们复习一下上节学到的三个命令: * syntax match用于定义正则表达式和规则的对应 * highlight default定义配色方案 * highlight link将正 ...
- Vim技能修炼教程(12) - Vim的脚本语言支持
Vim的脚本语言支持 本节开始,我们正式接触vimscript这门古老的脚本语言. 首先要说明,vim支持的扩展语言很多,比如python, python3, ruby, lua,tcl等常见脚本语言 ...
- Vim技能修炼教程(11) - 代码折叠
上一讲我们是程序员篇的第一讲,关于代码跳转.代码跳转是一个付出很少收获很大的功能.这一节我们开始一个收获很多,但是付出也相对多一点功能:代码折叠. 代码折叠 折叠的类型 折叠有下面几种类型: * Ma ...
- Vim技能修炼教程(6) - 行编辑器
在很久很久以前,计算机的运算能力还很弱,终端与主机的通信也不好.在没有显示器的时代,只能通过电传打字机跟主机通信.那时候只有行编辑器,编辑的时候只能在一行中进行.需要显示哪一行,就把哪一行或者哪几行打 ...
- Vim技能修炼教程(5) - 操作符实务
操作符实务 操作符复习 上次我们讲了操作符与文本对象的组合这样一个vim的强大功能.但是上节的知识点过于密集,可读性可能差了一点.不过没关系,重要的知识点在后面用到的时候我们可以先复习一下. 我们还是 ...
随机推荐
- springmvc.xml和applicationContext.xml配置的特点
1:springmvc.xml配置要点 一般它主要配置Controller的组件扫描器和视图解析器 下为:springmvc.xml文件 <?xml version="1.0" ...
- js中比较实用的函数用法
<table id="table"> <tr> <th>用户ID</th> <th>用户名</th> < ...
- ubuntu18.04安装ssh服务
1.安装openssh-server sudo apt-get install openssh-server 2.启动ssh服务 sudo service ssh start 3.检测是否启动了ssh ...
- 使用commons-pool2改造APNs连接池
最近公司很多人反应apns推送的消息很慢,有时候需要5.6分钟才收到消息,我检查了下日志发现确实存在这个问题. 我们使用的是 https://github.com/relayrides/pushy 这 ...
- Nginx下修改wordpress固定链接后导致访问文章404
假设我的wordpress博客是的 server{}段是直接放到放到了nginx.conf (有的人为了方便管理,都习惯在单独写个vhost/目录来存放每个网站的配置文件,这就要根据你自己的设置来添 ...
- UVa 11354 邦德(最小瓶颈路+LCA)
https://vjudge.net/problem/UVA-11354 题意: 有n个城市m条道路,每条道路有一个危险系数.先在有若干个询问,要求找到一条从s到t的路,使得途径所有边的最大危险系数最 ...
- Git出现fatal: Unable to find remote helper for 'https'
使用Git远程获取代码 git clone https://github.com/twlkyao/findfile.git 出现“fatal: Unable to find remote helper ...
- JavaScript高级程序设计-读书笔记(7)
第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...
- mac terminal update management pack
npm -g outdated npm -g install npm@6.4.1
- node.js 之 http 架设
Node.js 安装配置 下载node.js安装mis 打开:cmd cd到node.js安装目录下 输入nodejs --version 显示版本号,证明安装成功 在其根目录下建server.js ...