第四章  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. JVM-GC日志分析

    程序运行时配置如下参数: -Xms20M -Xmx20M -Xmn10M -verbose:gc -XX:+PrintGCDetails -XX:SurvivorRatio= -XX:+PrintGC ...

  2. python flask学习(1)与Git基础操作

    今天从简单的flask开始完成Flask web开发的学习.今天学习了Git和GitHub项目的提交. Git尝试提交过程中出现了"Could not read from remote re ...

  3. P1816 忠诚 倍增

    链接:https://www.luogu.org/problem/show?pid=1816 题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k ...

  4. jsp第一章 动态网页开发基础

    动态网站可以实现交互功能,如用户注册.信息发布.产品展示.订单管理等等: 动态网页并不是独立存在于服务器的网页文件,而是浏览器发出请求时才反馈网页: 动态网页中包含有服务器端脚本,所以页面文件名常以a ...

  5. kafka系列二:多节点分布式集群搭建

    上一篇分享了单节点伪分布式集群搭建方法,本篇来分享一下多节点分布式集群搭建方法.多节点分布式集群结构如下图所示: 为了方便查阅,本篇将和上一篇一样从零开始一步一步进行集群搭建. 一.安装Jdk 具体安 ...

  6. Mongodb JAVA API

    连接mongodb 1.连接一个mongodb ); 2.连接mongodb集群 MongoClient mongoClient = ), new ServerAddress("localh ...

  7. vue2.0:(二)、mock数据

    什么是mock数据呢?很多情况下,后台的搭建比起前端来说要麻烦的多,所以,常常是前端写好了页面以后后台接口却没有写好,但是在一个项目中,接口调试确实是最浪费时间的,所以,往往前端需要自己模拟数据. 第 ...

  8. CF1061B Views Matter

    思路: 贪心. 实现: #include <bits/stdc++.h> using namespace std; ]; int main() { int n, m; while (cin ...

  9. Sqlserver 2012 Always on技术

    使用了Sqlserver 2012 Always on技术后,假如采用的配置是默认配置,会出现Primary server CPU很高的情况发生,比如默认配置如下: 需要自定义来解决这个问题. 我们先 ...

  10. urllib2功能说明

    1.urlopen(url, data, timeout) 第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间. 第二三个参数是可以不传送的, ...