在可视化模式下,可以对一个文本块的整体进行操作。例如,首先高亮选中一部分文本,然后用d命令删除这个文本块。可视化模式的好处在于,你可以在做改动之前,就看到操作将影响的文本。可视化模式可以分为以下三种:

  1. v命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。
  2. V命令进入的行可视化模式(Linewise visual mode)。文本选择是以行为单位的。
  3. ctrl-V进入的块可视化模式(Blockwise visual mode)。可以选择一个矩形内的文本。(注意:在Windows中,ctrl-V可能已经被影射为粘贴操作,可以使用ctrl-Q进入块可视化模式。)

切换可视化模式

通过输入相应的可视化命令,就可以切换到不同的可视化模式。例如现在字符可视化模式下,如果想要切换到块可视化模式,那么只需要输入ctrl-V即可。当然,我们也可以先用ESC关闭当前的可视化模式,然后再进入其它可视化模式。

在可视化模式下选择

使用命令v进入字符可视化模式。在此模式下,用命令移动光标,光标起始位置和当前位置之间的文本将会以高亮显示。这时就可以对这些高亮显示的文本进行整体的操作。例如:在字符可视化模式中,首先用6l命令选中光标右侧的6个字符,然后输入d命令删除高亮显示的文本。

使用命令V进入行可视化模式。在此模式下,我们使用2j命令,就可以选中当前行及其随后2行。

使用命令ctrl-Q进入块可视化模式。在此模式下,我们使用2l命令向右移动,然后使用3j命令向下移动,就可以选中4行2列的文本块。

命令gv可以重复前一次可视化模式时选中的文本。如果已经在可视化模式下,执行该命令会选中前一次选择的文本。如果重复行执gv命令,就会在当前选中的文本和前一次选中的文本之间进行切换。

在可视化模式下移动

如果你已经在可视化模式下选择了若干文本,并且希望移动到已选择文本的另一结尾处,那么可以使用o命令。

如果你使用的是块可视化模式,那么已选择的区域将有四个角落。o命令只能移动到对面的一个角落,这时你可以使用O命令移动到同一行的另一个角落。

在可视化模式下编辑

在可视化模式下,我们可以进行各种编辑操作。如d命令可以删除高亮显示的文本,而D命令则会删除一行,即使这一行中只有部分文本是高亮显示的。类似的,y命令将复制高亮显示的文本,而Y命令会复制整行。c命令可以将高亮显示的文本删除并进入编辑模式,而C命令会删除一行文本并进入编辑状态。

针对高亮显示的文本块,我们可以用命令~进行大小写转换。用命令>增加缩进,或用命令<减少缩进。

我们还可以利用可视化模式,来合并多行文本。J命令可以将高亮显示的文本内容合并为一行,同时以空格来分隔各行。如果不希望在行间插入空格,那么可以使用gJ命令。

使用g?命令,可以使用rot 13算法来加密高亮显示的文本。针对同一个文本再次执行加密命令,就可以进行文本解密。

在可视化模式下,按下:键就可以对选定范围进行操作。例如:我们先在可视化模式下选中文本,然后执行:write block.txt命令,就可以将文本块写入另一文件中。选择多行,然后执行:sort命令,则可以对选中的文本进行排序。

如果想要查看可视化相关的帮助信息,可以在所希望帮助的名称前加v_前缀。例如使用:help v_d命令,可以得到关于在可视模式下进行删除操作的帮助信息。

退出可视化模式

当我们想要退出可视化模式时,可以按ESC键或ctrl+c键。

命令小结
v 进入字符可视化模式
V 进入行可视化模式
ctrl-V 进入块可视化模式
ctrl-Q
gv 选中前一次可视化模式时选择的文本
o 光标移动到选中文本的另一结尾
O 光标移动到选中文本的另一角落
 
 
 
转自:http://blog.csdn.net/niushuai666/article/details/17008357

vim的visual模式的更多相关文章

  1. vim insert VISUAL模式无法右键复制问题(转)

    转自:https://blog.csdn.net/coder_oyang/article/details/89096219 vim中使用鼠标右键粘贴,失败.vim的模式: 网上解法: 1. 普通模式下 ...

  2. vim 可视化模式(visual模式)

    转文章 为了便于选取文本,VIM 引入了可视(Visual)模式. 要选取一段文本,首先将光标移到段首,在普通模式下按 v 进入可视模式,然后把光标移到段末. 需要注意,光标所在字符是包含在选区中的 ...

  3. vim的visual可视模式(转载)

    转自:http://www.cnblogs.com/chenyadong/archive/2011/08/30/2159809.html 为了便于选取文本,VIM 引入了可视(Visual)模式.要选 ...

  4. docker vim右键进入visual模式无法粘贴

    右键不能粘贴,反而进入了visual模式, vim版本:version 8.0.707 修改方法: vim /usr/share/vim/vim80/defaults.vim 第70行 在mouse= ...

  5. vim visual模式 复制

    按ESC再按“V”,进入visual模式 用键盘向左向右箭头选中要复制的文字,按两下"Y"键 再到要粘贴的地方,按“P”键即可. 转自: http://jingyan.baidu. ...

  6. 菜鸟vimer成长记——第2.2章、visual模式

    vi是没有可视模式的.然而大多数编辑软件都都是有可视模式.所以我猜测vim是几乎迫于无奈才有了visual模式. 个人建议,能不用就不用.这样能直接在头脑里处理好文本,锻炼文本处理能力,同时能转变过来 ...

  7. 【vim】插入模式与常用编辑操作

    vim不像很多编辑器那样一启动便可以直接编辑文本,需要在普通模式按下i, a等键才会进入插入模式进行文本编辑. 如何进入插入模式 以下的命令都会让vim从普通模式切换到插入模式,但命令执行后的字符插入 ...

  8. VS下使用VIM, Visual Studio 安装 VSvim插件 配置 及使用

    简介 VIM是一款很高效的编辑工具,所幸的是VS2012以后支持VIM的插件:VsVim.下面介绍插件的安装.配置及简单使用. 1. 下载安装 去官网下载,双击直接安装后,重新打开VS. https: ...

  9. vi中使用鼠标右键插入时进入(insert)visual模式

    使用vim插入外面复制的内容时,用右键点击后,并未将内容粘贴进去,而是进入了(insert)visual模式,解决方法:先shift+enter进入普通模式输入 set mouse-=a然后再i进入i ...

随机推荐

  1. jQuery 学习笔记(jQuery: The Return Flight)

    第一课. ajax:$.ajax(url[, settings]) 练习代码: $(document).ready(function() { $("#tour").on(" ...

  2. 彻底解决matplotlib中文乱码问题(转)

    彻底解决matplotlib中文乱码问题 1.环境查看a.系统版本查看[hadoop@p168 ~]$ cat /etc/redhat-releaseCentOS Linux release 7.2. ...

  3. Jmeter测试计划中的元素

    测试计划中的元素(elements of a test plan) 本节描述测试计划不同的部分. 最小测试将包括测试计划.线程组和一个或多个采样器. 1 测试计划(Test Plan) 测试计划对象有 ...

  4. GraphQL 总结 + 在Django应用(Graphene)

        由Xmind编辑,下次更新会附加python demo.         附件列表

  5. sqlite3使用

    sqlite3使用 sqlite可以在https://www.sqlite.org/网站上下载.支持Linux, MacOS, Windows等各种操作系统.下载后不需要安装,解压后就可以使用,追加路 ...

  6. github 相关操作知识

    新设备上使用github 1.要在本地创建一个ssh key ssh-keygen -t rsa -C "email address" 2.界面提示进入.ssh文件夹下,找到id_ ...

  7. Java入门系列-20-异常

    为什么要进行异常处理 下面这段代码能否正常执行 public class DemoCalc { public static void main(String[] args) { int a=0; in ...

  8. 第三章 使用java实现面向对象 多态

    第三章 多态 一.编写父子类 1.多态是具有表现多种型生态的能力的特征,同一个实现接口,使用不同的实例而执行不同的操作 2.一个引用类型,使用不同的实例而执行不同操作.(父类引用子类对象) 使用多态的 ...

  9. Query performance optimization of Vertica

    Don't fetch any data that you don't need,or don't fetch any columns that you don't need. Because ret ...

  10. Java - 谨慎覆盖clone

    覆盖clone时需要实现Cloneable接口,Cloneable并没有定义任何方法. 那Cloneable的意义是什么? 如果一个类实现了Clonable,Object的clone方法就可以返回该对 ...