第四章  vim 可视模式

vim的可视模式允许我们选中一块文本区域并进行操作
3种不同的可视模式  分为 操作字符文本      行文本 块文本
.命令用来重复执行可视模式中的命令   只有在操作面向行的选区时 才特别有用  
而在操作面向字符的选区时  有时无法达到我们的预期
技巧20 深入理解可视模式
普通模式的很多命令   在可视模式中也完成相同的功能   例如h j k l   f{char}    ;    ,     n/N
但是在指定操作的范围  二者的方式有区别
在普通模式中 先触发修改命令  然后使用动作命令指定其作用范围
可视模式中 先选中区域   然后再出发修改命令 
两种模式的次序是颠倒的
在vim中将april单词更改为march
先定位光标到单词上
viw   高亮选择此单词 
c 命令更改单词内容
输入单词
选择模式  类似于windows下其他的常见的文本编辑器
当选中一段选区后   再输入文本会替换选中的文本    vim的可视模式也是按照此种方式工作的
<C-g>可以在可视模式及选择模式之间切换   屏幕下方的提示信息会由可视变为选择    如果在选择模式中输入任意可见字符,会替换所选内容并切换到插入模式   也可在可视模式中  用c来修改所选择的内容
选择模式仅仅用来迎合熟悉其他文本编辑器的用户  并不常用
技巧21  选择高亮选区
可视模式有3个不同的子模式  来处理不同类型的文本   
命令 用途
v 激活面向字符的可视模式
V 面向行
<C-v> 面向列块
gv 重选上次的高亮选区
可视模式间的切换
与普通模式下激活可视模式的方式相同
 

选区的范围由两个端点界定   其中一段固定   另一端可以随光标自由移动  可以用o键来切换其活动的端点

o键不用退出可视模式  重新选区
技巧 22   重复执行面向行的可视命令
集体缩进
选中连续的行
1. V3j 选中连续的3行
2. >. 连续缩进2次
 
准备工作
让< > 能够正常工作   需要把shiftwidth和softtabstop  的值设置为4     并启用expandtab选项
:set shiftwidth=4  softtabstop=4  expandtab
上例中>命令对它进行缩进  执行一次就会返回普通模式   如果还想选中上次的选区   按gv就可重选相同的文本  再次调用缩进命令。
 
 
技巧23   只要可能 ,最好用操作符命令  而不是可视命令
可视模式和vim的普通模式 .命令有时会有一些异常的表现
<a href="#">one</a>
<a href="#">two</a>
<a href="#">three</a>
将链接的文字转换为大写格式
用vit 选择标签中的内容  也即one,it命令是一种被成为文本对象的特殊动作命令
使用可视模式下的命令
命令 缓冲区内容
vit one 选中待转换文本
U ONE 将选中的文本转换为大写
j. TWO 重复动作
j. THRee 重复动作   出现问题
结论   当一条可视命令被重复执行的时候    它会影响相同数量的文本    one和two均为3个字母     three为5个字母   所以只能以初次的3个字母为标准来执行
使用普通模式下的操作符命令
按键 缓冲内容 作用
gUit ONE gU为操作符    it为动作命令   将one转变为大写
j.  TWO 重复动作
j. THREE
结论
均需要四次按键   意义不同
可视模式的方式  4次按键可以被当做两个独立的命令
vit为选中选区   U用来对选区转换
普通模式的四个按键被当成一个单独的命令   它由一个操作符 gU和一个动作命令it组成
  有时修改的文本范围的机构很难用动作命令表达出来   此情况是可视模式擅长的
技巧24   用面向列块的可视模式编辑表格数据
纯为本表格
normal mode 15
insert mode 31
visual mode 44
   想用管道符画出一条竖线来隔开这两列文本   使之看起来更像一个表格  
按键操作 缓冲区 作用
<C-v>3j 选中光标位置向下的3列
x... 每行各缩3各字符
gv       重复选中原来的列
r| 每行的光标位置插入管道符号
yyp 选中顶端行  并复制一行
Vr- 选中整行  并且用-替换
完成效果图
chapter | page
---------------------------------
normal mode | 15
insert mode | 31
visual mode | 44
技巧25 修改列文本
列块可视模式同时往若干行中插入文本。
在列块选择后   删除操作会同时影响所有被选中的行  但是插入操作只影响行或顶行   
技巧26 在长短不一的高亮块后添加文本
列块模式在操作方形的代码块时可用 也可以用在长短不一的行上
三段不同长度的代码
在每行的后面加一个分号
先将光标定位到第一行的行尾
<C-v>jj$ 将1 ‘a’以及下面的等号及后面的所有内容选中  再光标定位到行尾
A; 尾部添加;  此时模式变为插入模式   仅仅第一行的末尾加了;
<ESC> 此时 三行后面均加分号
可视模式下  A键之后  会进入插入模式  任何输入的内容仅会出现在顶行的行首   但是一旦返回到普通模式  这些修改就会被扩散到其余的选中的行上
 
vim对i和a键的约定
普通模式切换到插入模式的命令的几个约定  i和a都能完成切换  并分别将光标置于当前字符之前或之后  I和A命令的表现类似   只是他们分别把光标置于当前行的开头和结尾
但是在可视模式及操作符待决模式中 i和a键沿用不同的约定  他们会被当做一个文本对象的组成部分   所以在可视模式的时候按i键不会进入插入模式

第四章 vim 可视模式的更多相关文章

  1. Linux就该这么学 20181003(第四章Vim/shell/测试条件)

    参考链接https://www.linuxprobe.com/ vim文本编辑器 命令模式:控制光标移动,可对文本进行复制,黏贴,删除和查找工作 输入模式:正常的文本录入 末行模式:保存或退出文档,以 ...

  2. vim可视模式

    参考: http://xw2423.byr.edu.cn/blog/archives/232 http://www.pythonclub.org/linux/vim/visual-mode Vim的多 ...

  3. 《linux就该这么学》第四节课笔记,三章和四章开始!

    第三章 (根据课本和在线培训视频排版总结,借鉴请改动)         右键可打开终端练习             3.1:输入输出重定向 输入重定向:符号 "<" ,是一种 ...

  4. vim第五章 命令行模式

    vim第五章命令行模式 技巧 27 结识vim的命令行模式 在命令行模式中执行的命令有被称作ex命令    在按/调出查找提示符或者<C-r>=访问表示寄存器时 命令行模式也被激活     ...

  5. VIM下的可视模式的相关知识

    三种可视模式: v 激活面向字符的可视模式: V 激活面向行的可视模式: ctrl+v 激活面向列块的可视模式: 选择高亮区: 上面的 v 是可以与跳转指令 以及表示范围的指令组合使用的. 如:vl, ...

  6. Vim技能修炼教程(7) - 可视模式

    可视模式 可视模式是与正常模式.插入模式一起并列的模式.它的作用就像图形化编辑器下用鼠标来选择一个块. 在vim下,使用正常模式和ex命令,连搜带跳行的,未必就比用鼠标慢. 我们先做一个例子找找感觉, ...

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

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

  8. Vim的可视模式

    可视模式可以看到选中的字符串, 并对其进行操作 v:进入字符选择模式 V:进入行选择模式 ctrl-v(Window是ctrl-q):进入block选择模式 o:移动光标到选择的另一端 O:移动光标到 ...

  9. vim 的visual可视模式

    一,在普通模式下面可以按v或者V进入可视模式下,选择内容: v 可以选择光标位置到光标结束的字符,包括行: V 选择光标位置行到光标结束的所在行的之间的所有行,选择的是个矩形: CTRL+v 选择块:

随机推荐

  1. kafka安装和使用

    kafka安装和启动 kafka的背景知识已经讲了很多了,让我们现在开始实践吧,假设你现在没有Kafka和ZooKeeper环境. Step 1: 下载代码 下载0.10.0.0版本并且解压它. &g ...

  2. React项目搭建(脚手架)

    首先我们需要安装node环境:download nodejs:https://i.cnblogs.com/EditPosts.aspx?opt=1 找到你需要的版本和系统安装包下载并安装. 这时候你可 ...

  3. python部分 + 数据库 + 网络编程

    PS:附上我的博客地址,答案中略的部分我的博客都有,直接原标题搜索即可.https://www.cnblogs.com/Roc-Atlantis/ 第一部分 Python基础篇(80题) 为什么学习P ...

  4. ES-Mac OS环境搭建(1)

    前言 由于elasticsearch依赖Java,所以先要配置上Java环境,并且Java JDK必须要求1.8以上,这里以安装Java 1.8为例.安装环境如下: elasticsearch6.5. ...

  5. arcgis jsapi接口入门系列(1):地图

    地图相关 //地图相关demo mapFun: function () { //获取地图中心点 let center = this.mapView.center; //地图中心点坐标(同地图坐标系) ...

  6. java冒泡排序和快速排序代码

    冒泡排序: package nicetime.com; //基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,// 让较大的数往下沉,较小的往上 ...

  7. Android学习总结(十六) ———— MediaPlayer播放音频与视频

    一.基本概念 本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构.Android的MediaPlayer包含了Audio和video的播放功能,在Andr ...

  8. POJ 1655 Balancing Act (树的重心,常规)

    题意:求树的重心,若有多个重心,则输出编号较小者,及其子树中节点最多的数量. 思路: 树的重心:指的是一个点v,在删除点v后,其子树的节点数分别为:u1,u2....,设max(u)为其中的最大值,点 ...

  9. codevs 4165 ​高精度求阶乘

    时间限制: 1 s  空间限制: 256000 KB  题目等级 : 白银 Silver 题目描述 Description 用高精度计算出S=n! 其中"!"表示阶乘,例如:5!= ...

  10. spark 之主成分分析

    C4∗2