vim 第三章  插入模式

在普通模式下可以删除  复制   及粘贴的命令   
在插入模式下也存在以中方便快捷的方式    能够粘贴寄存器中文本  
两种方式来插入键盘上不存在的非常用字符
替换模式是插入模式的一种特例,它会提花文档中已有的字符
子模式     :插入-普通模式   可以让我们执行一个普通模式命令,之后马上又回到插入模式
自动不全是插入模式中才能使用的高级功能
技巧13 在插入模式中可即时更正错误
 
除了退格键   另外的一些命令
在插入模式下的动作组合键
按键操作  用途
ctrl-h 删除前一个字符   同退格键
ctrl-w 删除前一个单词
ctrl-u 删除至行首
上面的组合键  不是在插入模式独有    也不是在vim独有      在vim的命令行模式中   以及在bash shell中也可以同样使用他们
 
 
技巧 14 返回普通模式
插入模式仅仅专注做一件事    输入文字    介绍这两种模式间的切换   
<ESC>键子远   可以用ctrl-[  组合键来代替   前面的键
<ESC>  切换到普通模式
<C-[> 切换到普通模式
<C-o> 切换到插入-普通模式
当处于插入模式时,想运行一个普通模式命令   然后马上糊掉原来的位置继续输入会用到插入-普通模式
此模式为普通模式的一个特例,它能让我们执行一个普通模式命令 。我们可以执行一个普通模式命令 ,执行完后,马上就又返回到插入模式。
<C-o>zz   在插入-普通模式中触发这条命令    操作完成后直接回到插入模式   因此可以不受中断地继续打字
 
技巧15 不离开插入模式  粘贴寄存器中的文本
vim的复制和粘贴操作一般都在普通模式中执行,不过有时我们也许想不离开插入模式 就能往文档里粘贴文本
*重新映射大小写转换键 CapsLock     普通模式时   j k命令为移动光标      而J命令用来把当前行和下一行连接在一起
K命令用与查看处于光标之下的那个单词的手册页。
如果修改大小写映射   需要在系统级别去修改,这样不仅vim会改变   系统其他地方也会改变
 
例题:
Practical Vim,by Drew Neil
Read Drew Neil's
将第一行的书名插入到最后一行,补全该行
1. yt 当前光标位于第一行行首    复制“Practical Vim”到专用寄存器中
2. jA空格 调整光标位置  第二行的行尾  并且输入空格
3. <C-r>0 将刚才复制的文本粘贴到光标所在的位置
4. .<ESC> 输入.    并退出到普通模式
针对上面的第3条命令
<C-r>{register} 后面的为寄存器的名字、
<C-r><C-p>{register}更加只能   会按愿义插入寄存器内的文本  并修正任何不必要的缩进
技巧16 随时随地做运算
表达式寄存器允许我们做一些运算,并把运算结果直接插入到文档中  
此寄存器是个另类  可以用来执行一段vim脚本  并且返回其结果。
=指明使用表达式寄存器   在插入模式中  输入<C-r>=即可访问  在屏幕下方的提示符后输入   <CR>     
vim会把执行的结果插入到文档的当前位置。
        例如:
33 55 2 相乘得
1. A 调整光标到最后 并输入
2. <C-r>=33*55*2<CR> 使用表达式寄存器  计算结果
 
技巧17 用字符编码插入非常用字符
非键盘上的字符 输入方法
<C-v>{code} 后面的code为字符的编码 ascII unicode
3位数子 大写字母A
<C-v>065
超过3位数的字符 可以用4位16进制编码来输入
<C-v>u{1234}

如果想知道文档中任意字符的编码   仅需要将光标移到它上面并按ga命令即可

<C-v>命令后面跟一个非数字键 会插入这个按键本身所代表的字符
按键操作 用途
<C-v>{123} 以十进制字符编码插入字符
<C-v>u{1234} 十六进制字符编码插入字符
<C-v>{nondigit} 按愿义插入非数字字符
<C-k>{char1}{char2} 插入以二合字母{char1}{char2}表示的字符
技巧18 用二合字母插入非常用字符
为便于记忆  用二合字符输入代表的字符
例如 ?I 表示的“ ?”字符
<C-k>?I   就可以输入后面的倒问号
选择二合字母时尽量使之具有描述性    这样更容易记忆   
《》分别以<<    >>表示
1/2   1/4   分别以12     14  来表示
:h digraphs-default 缺省二合字母集依从一定的惯例
:digraphs 查看可用的二合字母列表
:h digraph-table 查看另一个更为有用的列表
技巧19 用替换模式替换已有文本、
在替换模式中输入会替换文档中已有文本   除此之外  该模式与插入模式完全相同
例题:
asdf.But in asjdfl
laskdjflj
将上面的两句话合并成一句话    需要将.改为,并且将B该为b
1. f. 移动光标找.
2. R, b<ESC> 将.替换为, b   然后回到普通模式
 
 
注意
虚拟替换模式替换制表符
某些字符会使替换模式变得复杂化   tabstop设置宽度
:h 'tabstop'
当光标位于制表符上时      假设当前宽度为8    进入替换模式  输入的下一个字符将会替换制表符  也就是将8个字符替换为一个字符   会缩短当前行的长度
此时出现了另外一种替换模式  成为虚拟替换模式   由gR命令触发   将制表符当成一组空格进行处理    光标位于制表符上  然后切换到虚拟替换模式  在输入前7个字符时  每个字符都会被插入到制表符之前   最后第8个字符会替换制表符
在此模式中    会按照屏幕上的实际宽度来替换字符  而不是文件中所保存的字符进行替换   这样会减少意外的发生  
所以尽量采用虚拟替换模式
单次版本的替换及虚拟替换
r{char}和gr{char}命令允许我们覆盖一个字符   之后马上又回到普通模式

vim 第三章 插入模式的更多相关文章

  1. vim 基础学习之插入模式

    插入模式1.字符编码,插入特殊字符 <C-v>{3位} 如,你想输入A,你可以在输入模式下<C-v>065(必须是3位) <C-v>u{4位} 如,你想输入¿,你可 ...

  2. Pro ASP.NET MVC –第三章 MVC模式

    在第七章,我们将创建一个更复杂的ASP.NET MVC示例,但在那之前,我们会深入ASP.NET MVC框架的细节:我们希望你能熟悉MVC设计模式,并且考虑为什么这样设计.在本章,我们将讨论下列内容 ...

  3. Pro ASP.NET Core MVC 6th 第三章

    第三章 MVC 模式,项目和约定 在深入了解ASP.NET Core MVC的细节之前,我想确保您熟悉MVC设计模式背后的思路以及将其转换为ASP.NET Core MVC项目的方式. 您可能已经了解 ...

  4. 逐步搭建Lamp环境之vim的三种模式以及基本命令

    在Linux中vim的三种模式分别为:命令模式.末行模式.编辑模式.以下是三者的关系图: 三种模式的彼此切换: 命令模式是vim中的默认模式. 命令模式切换至末行模式: 使用英文冒号(:). 末行模式 ...

  5. VIM下的插入模式的相关知识:

    1. 建议:当打错一个单词时,删除掉重新打一遍, 避免在错誤的基础上进行修改: 2. 在插入模式下,可以用一些组合键,它也可以用于VIM 命令模式下,也可以用于 base shell 下: ctrl- ...

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

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

  7. vim第五章 命令行模式

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

  8. 使用Micrisoft.net设计方案 第三章Web表示模式

    第三章Web表示模式 体系结构设计者在设计第一个作品时比较精简和干练.在第一次设计时,并清除自己做什么,因此比较小心谨慎.第二个作品是最危险的一个作品,此时他会对第一个作品做修饰和润色,以及把第一次设 ...

  9. 无意发现vim里插入模式可以借助Alt键输入一些特殊字符

    无意发现vim里插入模式可以借助Alt键输入一些特殊字符.如: Alt+w: ÷ Alt+:: » Alt+f  :  æ Alt+ . :  ® Alt+ ? :  ¯...

随机推荐

  1. Code First约定-数据注释

    通过实体框架Code First,可以使用您自己的域类表示 EF 执行查询.更改跟踪和更新函数所依赖的模型.Code First 利用称为“约定先于配置”的编程模式.这就是说,Code First 将 ...

  2. C#入门笔记3 表达式及运算符

    C#表达式 表达式,把变量.字面值与运算符组合起来,就创建表达式,是计算的基本构件.字面值:是源代码中键入的数字.字符串,表示指定类型的值.常用有几种:整数.实数.字符.字符串. 整数字面量[也能使用 ...

  3. 在switch中的case语句中声明变量会被提前

    原文链接:http://my.oschina.net/u/2000201/blog/514384 本人今天在编写工具类时,无意之间发现,在Java的Swith语句的case语句中声明局部变量时出现了一 ...

  4. webpack入门之最简单的例子 webpack4

    webpack在目前来说应该是前端用的比较多的打包工具了,那么对于之前没有接触过这块的该怎么办呢?答案很明显嘛,看资料,查文档,自己去琢磨,自己去敲一敲,跑一跑: 那么,这边我将以一个最基础的例子来将 ...

  5. IE兼容只读模式

    表单input具有只读模式属性,一般来说,一般的浏览器都支持该属性,即readyonly,但IE不支持,只能寻找其兼容性. 第一种:unselectable='on' <input id=&qu ...

  6. 项目在cocos 2.23移植到cocos 3.1.0所出现的bug

    在建项目时一定要注意选择源代码!而不是预编译库 "extensions/ExtensionMacros.h”: No such file 项目右键-属性-配置属性-c/c++ - 常规-附加 ...

  7. MySQL从服务配置文件

    [mysql]port=3306socket=/var/lib/mysql/mysql.sockdefault-character-set = utf8mb4 [mysqld]server-id=2l ...

  8. HDU 1171 Big Event in HDU 杭电大事件(母函数,有限物品)

    题意: 分家问题,对每种家具都估个值,给出同样价值的家具有多少个,要求尽可能平分,打印的第一个数要大于等于第二个数. 思路: 可以用背包做,也可以用母函数.母函数的实现只需要注意一个点,就是每次以一种 ...

  9. PyTorch在NLP任务中使用预训练词向量

    在使用pytorch或tensorflow等神经网络框架进行nlp任务的处理时,可以通过对应的Embedding层做词向量的处理,更多的时候,使用预训练好的词向量会带来更优的性能.下面分别介绍使用ge ...

  10. CPP-基础:内存泄露及其检测工具

    [转]浅谈C/C++内存泄露及其检测工具   对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题.已经有许多技术被研究出来以应对这个问题,比如 Smart Pointer,Garba ...