vi是没有可视模式的。然而大多数编辑软件都都是有可视模式。所以我猜测vim是几乎迫于无奈才有了visual模式。

  个人建议,能不用就不用。这样能直接在头脑里处理好文本,锻炼文本处理能力,同时能转变过来思维习惯。

目的

  • 掌握visual的基本操作步骤
  • 记住visual独有的用法

使用步骤

  visual的操作可以分为三个步骤。可以对比normal的二个步骤:操作符+动作命令。

  1. 激活可视模式。一个是因为绝大时间都在normal模式下,需要切换。第二个是因为visual有三种情况。
  2. 移动文本末端。通过移动文本的末端来选择高亮文本。
  3. 输入操作符。最后通过操作符完成本次文本操作。

激活可视模式

  Vim 具有3 种不同的可视模式,分别用于操作字符文本、行文本或块文本。

  对应的开启语法如下:

命令 用途
v  激活面向字符的可视模式
V  激活面向行的可视模式
Ctrl+v  激活面向列块的可视模式
gv  重选上次(字符,行,块都可以)的高亮选区
gn 激活面向字符的可视模式并选中最近一次搜索匹配的文本。相当于搜索的时候n。如果连续使用gn命令,则选取到下一块匹配文本
gN 激活面向字符的可视模式并选中最近一次搜索匹配的文本。相当于搜索的时候N。如果连续使用gn命令,则选取到上一块匹配文本

移动文本

动作命令

  和normal模式的动作命令的用法一样。这里不在赘述。

修改光标位置

操作按键 用途
o 切换高亮选区的活动端。即切换高度的开头和结尾
O(shift+o) 和o一样。只有在visual是块模式的时候,它表示的是当前行被选中的开头和结尾

操作符

  操作符也和normal模式基本一样。除了下面列的“特殊情况”的地方需要注意,其他的用法都是一样的。

特殊情况

  1. 在可视模式及操作符待决模式中,i 和a 键表示文本选择的开头。即和normal的文本选择的a和i一个意思。所以按i,a并不能进入insert模式。
  2. 在可视模式及操作符待决模式中,o 和O 键表示切换高亮选区的活动端。所以也不能进入insert模式。

陷阱

  只要可能,最好用操作符命令,而不是可视命令。

#假设我们想把下面列表中的链接文字转换为大写格式:
<a href="#">one</a>
<a href="#">two</a>
<a href="#">three</a>

  使用可视模式下的命令进行大写转换:

  1、我们先转一个单词为大写。

  2、好,我们执行一下j. 命令,把光标移到下一行并重复上次的修改。此命令在第二行工作得很好,但如果我们再执行一次,最终就会得到这个看起来有点古怪的结果:

  

  使用普通模式下的操作符命令进行大写转换:

      

  结论:如果我们想使点命令能够重复某些有用的工作,那么最好要远离可视模式。作为一般的原则,在做一系列可重复的修改时,最好首选操作符命令,而不是其对应的可视模式命令。甚至我个人的建议是:不要使用visual模式。

独有功能

列模式

  这个是visual独有的功能。在操作一些配置文件,而且文本复杂度很低的时候(比如不需要经过大脑计算就可以到达的,每个人因熟练度不同而异,比如3-10行),可以使用。

  例如:

  • 修改hosts文件里域名的指向,光标前后几行的域名从内网的192.168.1.16修改为127.0.0.1的时候。
  • 在编写脚本的时候,光标前后几行代码需要一会注释掉一会取消注释测试时。

  

菜鸟vimer成长记——第2.2章、visual模式的更多相关文章

  1. 菜鸟vimer成长记——第2.0章、模式初探

    首先,其他的文本编辑器只有一种模式,就是插入模式.而vim一下子颠覆了我们的世界观——有好多模式.这个是思维上的切换,很难也很重要!!! 其次,Vim 提供一个区分模式的用户界面.也就是说在不同的模式 ...

  2. 菜鸟vimer成长记——第2.4章、cmd-line模式

    cmd-line模式又有3个类型:Ex 命令(ex commands).查找模式(Search patterns).Filter 命令(Filter commands).本文主要重点的是Ex 命令和S ...

  3. 菜鸟vimer成长记——第2.1章、normal模式

    目的 掌握normal模式下常用操作的语法和概念,这些操作对应的应用场景以及实用技巧. 通过normal模式举一反三掌握cmd-line和visual的常用文本操作. 简介 文本操作的理想状态为:一个 ...

  4. 菜鸟vimer成长记——第4.2章、编程插件

    简介 这部分的插件是与编程相关的插件.主要涉及两大块:所有编程语言通用的插件,以及各个语言独有的插件.插件的数量和合理性,这可能是一个不断累积和修正的过程. 个人感觉,现在比较适合sh,html,ma ...

  5. 菜鸟vimer成长记——第4.1章、通用插件

    简介 关于插件的分类,此系列只会简单的区分为通用插件和编程插件.通用插件的意思是,不基于任何编程语言都可以使用的插件.编程插件,是针对于编程习惯,或者说是针对于某种语言的插件. 计划中,是先把基本常用 ...

  6. 菜鸟vimer成长记——第4.0章、Vim插件管理利器-Vundle

    定义 Vundle是vim bunler和简称,它是一个vim插件管理器. Vim本身缺乏对插件的有效管理,安装插件并配置.vimrc文件非常不便.gmarik受到Ruby的bunler的启发,开发了 ...

  7. 菜鸟vimer成长记——第2.3章、insert模式

    大部分的Vim 命令都在非插入模式中执行,不过有些功能在插入模式中会更好实现些. 如果没有输入当前文件不存在的新文本的需求时,建议通过其他模式来操作完成. 目的 掌握inser模式下常用操作的语法和概 ...

  8. 菜鸟vimer成长记——目录

    菜鸟vimer成长记——第0章.我眼中的vim学习 菜鸟vimer成长记——第1章.统一概念 菜鸟vimer成长记——第2.0章.模式初探 菜鸟vimer成长记——第2.1章.normal模式 菜鸟v ...

  9. 菜鸟vimer成长记——第0章、我眼中的vim学习

    这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...

随机推荐

  1. Redis学习---Redis的免密操作

    Redis的免密操作 问题解决[方式一]:当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后密码就会失效 1.首先进入redis,如果没有开启redis则需要先开启: [r ...

  2. Unity调用安卓中的方法遇到的问题

    最近在用U3D做一个简单的迷宫游戏,在项目中利用Unity制作游戏场景,在android中调用游戏场景,并在游戏结束后调用安卓方法,传递参数,退出游戏场景 查找网上资料,基本上Unity调用安卓的写法 ...

  3. Hadoop HBase概念学习系列之列、列簇(十二)

    列在列簇中依照字典排序.例如,列簇是基础信息或公司域名或水果类.列是基础信息:面貌.基础信息:年龄.公司域名:org.公司域名:edu.水果类:苹果.水果类:香蕉.      列 = 列簇:列修饰符 ...

  4. 【ansible】Windows开启远程控制错误解决方案:无法检查防火墙状态

    这个在老版本的Windows系统才有这种bug.例如Windows 2008 R2和Windows 7,如果你的系统的阿里云的Windows server 2008 R2,无需装这个,好像阿里云的系统 ...

  5. javascript中对数组对象的深度拷贝

    在前端开发的某些逻辑中,经常需要对现有的js对象创建副本,避免污染原始数据的情况. 如果是简单的一维数组对象,可以使用两个原生方法: 1.splice var arr1 = ['a', 'b', 'c ...

  6. Python基本知识3----序列

    前言: 序列:列表/元组/字符串 3种序列的共同点: 都可以通过索引得到每一个元素 默认索引值从0开始(还支持负数) 都可以通过切片的方式得到范围内的元素的集合 有很多共同的操作符(重复操作符.拼接操 ...

  7. [译]OpenGL像素缓冲区对象

    目录概述创建PBO映射PBO例子:Streaming Texture Uploads with PBO例子:Asynchronous Readback with PBO 概述 OpenGL ARB_p ...

  8. python HtmlTestRunner python2.x python3.x报告优化模板源码下载

    文件py压缩包下载地址https://files.cnblogs.com/files/SunshineKimi/HtmlTestRunner2.x_3%2Cx.rar 源码拷贝如下: python 2 ...

  9. Spring源码分析(十)注册解析的BeanDefinition

    摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 对配置文件解析完成后,获取的beanDefiniton已经可以进行使用了 ...

  10. 沟通修炼 I型沟通->U型沟通

    沟通的目的 来源:邀请你看<01课 沟通管理:学会U型沟通,沟通效率翻倍>https://url.cn/51YaHrq?sf=uri 案例: 女友太困,不想早起去上班 你的回答? 正确做法 ...