第四章  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. 我的NopCommerce之旅(8): 路由分析

    一.导图和基础介绍 本文主要介绍NopCommerce的路由机制,网上有一篇不错的文章,有兴趣的可以看看NopCommerce源码架构详解--对seo友好Url的路由机制实现源码分析 SEO,Sear ...

  2. CF1062D Fun with Integers

    思路: 找规律. 实现: #include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ...

  3. 【读书笔记】构建之法(CH1~CH3)

    人类文明的发展离不开哲学家的思考.科学家的发现和工程师的构建.三个简单的方程式解释了什么是现代软件工程: 1.程序=算法+数据结构 2.软件=程序+软件工程 3.软件企业=软件+商业模式 软件开发的不 ...

  4. LR中订单流程脚本2

    Action(){ //1.设置服务器的IP地址 //lr_save_string("192.168.1.12:8080", "ip"); lr_save_st ...

  5. 洛谷 P1926 小书童——刷题大军

    题目背景 数学是火,点亮物理的灯:物理是灯,照亮化学的路:化学是路,通向生物的坑:生物是坑,埋葬学理的人. 文言是火,点亮历史宫灯:历史是灯,照亮社会之路:社会是路,通向哲学大坑:哲学是坑,埋葬文科生 ...

  6. (1)Ngixn 编译安装 (版本:1.12.1)

        1.创建用户和群组     groupadd nginx     创建一个用户,不允许登陆和不创主目录     useradd -s /sbin/nologin -g nginx -M ngi ...

  7. java 核心技术卷一笔记 6 .1接口 lambda 表达式 内部类

    6.1 接口不是类,是对类的一组需求的描述,这些类需要遵守接口描述的统一格式进行定义.例如:Arrays类中sort方法(可以对对象数组进行排序)前提是对象所属的类必须实现了Comparable 接口 ...

  8. codeforce Gym 100203I I WIN (网络流)

    把'I'拆成容量为1一条边,一个入点一个出点,入点和相邻的'W'连一条容量为1的边,出点和相邻的'N'连一条容量为1,所有的'W'和源点连一条容量为1边,所有的'N'和汇点连一条容量为1的边,表示只能 ...

  9. 玄学C语言之scanf,printf

    #include <bits/stdc++.h> using namespace std; int main() { int a,c,d; ]; scanf("%d." ...

  10. CAD交互绘制圆形云线批注(网页版)

    js中实现代码说明: 动态拖放时的绘制事件: function DoDynWorldDrawFun(dX,dY,pWorldDraw,pData) { //自定义实体的GUID标识符 var sGui ...