Vim技巧之四大模式_插入模式
Vim技巧之四大模式_插入模式
在前面的文章《Vim技巧之四大模式_普通模式》中我们提到过四大模式之中的一个的普通模式,今天我们继续讲讲Vim
四大模式里面的插入模式
普通模式好比是发动一个技能。而插入模式则好比是一般的物理攻击,可是就算是平平淡淡的物理攻击,还是有不少的技巧可言的
在插入模式中及时更正错误
在普通模式中,我们要更改一个错误的输入有很多种做法,我们能够直接点击u
来撤消之前键入的内容,也能够用caw
,ciw
,cb
等等命令来将错误的输入进行及时的更改,可是假设我们在插入模式中想要及时的更改错误的输入,难道除了<Backspace>
就没有其它的方法了么?
在很多流行的编辑器里面。比方Emacs
,Sublime Text
,假设发现输入错误,则能够<C-Backspace>
来将删除前一个单词,在Emacs
中还能够<C-k>
将光标所在的整行数据删除,那在Vim
里面有没有这样的便捷的操作呢?
按键操作 | 作用 |
---|---|
<C-h> (Backspace ) |
删除前一个字符 |
<C-w> |
删除前一个单词 |
<C-u> |
删至行首 |
掌握了上面的技巧就能够不用回到普通模式也能够高速的更改数据了
插入-普通模式
在插入模式的某些情况下我们仅仅是想运行普通模式以下的一条命令,然后继续输入数据,我们能够用<C-o>
来回到普通模式,在运行完一条命令以后,立即就会返回到插入模式。
(我个人还是比較喜欢直接<ESC>
)
比方你在编辑文本的时候须要将正在编辑的该行文本居中(zz
)或者是置顶(zt
),你就能够<C-o>zz
就能够啦。
在插入模式模式以下直接粘贴指定寄存器的内容
首先,我们须要知道什么是Vim
寄存器。Vim
的寄存器顾名思义就是用来寄存一些特定的数据或者是用户自己定义的数据,在我们须要的时候直接訪问寄存器就可以,在Vim
里面输入:reg
来查看寄存器中存放的内容
能够看到各种各样的寄存器,如需了解Vim
寄存器。请看这里vim寄存器使用详细解释
比方当中比較经经常使用到的数字寄存器"[0-9]
,Vim
将复制的数据保存到寄存器"0
中。将删除的最新数据保存到"1
中,旧的删除的数据将从前一个寄存器中移动到下一个寄存器中,比方当删除新的数据的时候时候,寄存器"1
的数据将会转移到寄存器"2
中。"2
的转移到"3
中,以此类推。最后将新的删除数据保存到"1
中。
有些时候我们想粘贴之前就删除的数据(不是最新删除的数据),这时候使用p
明显是不行的了,由于p
仅仅粘贴最新的删除或者复制的数据,那么之前删除的数据就消失了么?事实上不然,Vim
将会为我们保存九次删除操作的数据,仅仅要在插入模式下键入<C-r>{register}
就能够粘贴register
中的数据了,在普通模式下为"{register}p
举个栗子:
我们有以下的文本:
查看一下寄存器中的东西
我们要粘贴寄存器
"8
的数据。<C-r>8
注意:
使用<C-r>{register}
粘贴的数据将会保留原有数据的缩进格式,假设你设置了testwidth
或者是autoindent
,那么就有可能出现不必要的缩进。
这时你就须要採用<C-r><C-p>{register}
来单纯的插入数据,没有不论什么的缩进
插入模式中做运算
假设我们在插入模式中须要进行一些简单的运算,我们能够直接使用表达式寄存器"=
来计算我们的表达式。并插入结果,详细使用方法为<C-r>={expression}<CR>
,当中expression
是我们须要计算的式子。比方1+2
,10*6
…
举个栗子:
我们键入两个表达式:
借助表达式寄存器完毕基本计算
<C-r>=5+12<CR>
<C-r>=6*78<CR>
用字符编码插入很常使用字符
仅仅要我们知道某个字符的编码,Vim
就能够直接插入这个字符,我们仅仅用在插入模式中输入<C-v>{code}
就能够插入code
相应的字符,比方<C-v>065
就能够插入大写字母'A'
反之。假设你想知道某个字符的编码。你能够将光标移到该字符上。然后输入ga
,屏幕下方就会显示该字符的编码了
替换已有的文本
在Vim
中,假设你想键入一段新的文本来替代原有的文本。那么R
和r
这两个命令你是不可不知的
命令 | 作用 |
---|---|
R |
从光标处開始替换文本直到按下<ESC> |
r |
替换当前的一个字符 |
举个栗子:
要将上面的
Vimer
改为loser
,我们能够这样来改
0(移动到句首)
fV(移动到Vimer
词首)
Rlos(将Vim
改为los
)
注意:
我们在使用替换的时候,Vim
是将占有多个空格宽度的制表符当做是一个替换字符,于是我们在进行替换时就会有各种不希望出现的缩进。不正确齐。为了避免这样的情况,我们能够使用gR
或者gr
命令来进行替换操作,在gR
和gr
替换中,Vim
会将制表符当做一组空格来处理,详细的空格数要由制表符占用的空格宽度决定,这样的替换成为虚拟替换模式。
Vim技巧之四大模式_插入模式的更多相关文章
- Vim技巧之四大模式_普通模式
Vim技巧之四大模式_普通模式 一见不钟情的普通模式 普通模式以下的强悍操作 什么是操作符 什么是动作命令 误操作怎么办 那种操作更划算 普通模式下的神奇大招 Vim技巧之四大模式_普通模式 众所周知 ...
- 在C#中,Windows Console控制台 设置控制台标题、禁用关闭按钮、关闭快速编辑模式、插入模式
设置控制台标题 禁用关闭按钮 关闭快速编辑模式 关闭插入模式 设置控制台标题.禁用关闭按钮 #region 设置控制台标题 禁用关闭按钮 [DllImport("user32.dll&quo ...
- Notepad++输入模式之改动模式、插入模式
notepad++光标是直的,怎样让它变成竖的? 通常光标是竖的.为插入模式,光标在字符之间时输入,内容会随输入的内容向后移动,新输入的内容不会替换后面的内容. 当按一下"Insert&qu ...
- Vim 的命令模式转插入模式
一.在命令模式输入下面的快捷方式: i 在当前光标前插入字符: I 在当前行行首插入字符: a 在当前光标后插入字符: A 在当前行行尾插入字符: o 在当前行下面另起一新行: O 在当前行上面另起一 ...
- Redis_集群_主从模式_哨兵模式
1.主从模式 2.哨兵模式
- vim 第三章 插入模式
vim 第三章 插入模式 在普通模式下可以删除 复制 及粘贴的命令 在插入模式下也存在以中方便快捷的方式 能够粘贴寄存器中文本 两种方式来插入键盘上不存在的非常用字符 替换模式 ...
- [转] vi/vim命令模式和编辑模式各种操作
摘要:vi 编辑器是最常用的文档创建和编辑工具,初学者应该学会简单应用vi ,学会在vi 中做简单的修改.删除.插入.搜索及替换作业:如果您是新手,不妨看看本文,或许这篇文档能让您在最短的时间内学会v ...
- 最佳vim技巧
最佳vim技巧----------------------------------------# 信息来源----------------------------------------www.vim ...
- Vim使用技巧(2) -- 插入模式技巧 【持续更新】
组合快捷键 Ctrl + h //删除前一个字母(同退格键) Ctrl + w //删除前一个单词 Ctrl + u //删除到行首 Esc //切换到普通模式 Ctrl + [ //切换到普通模式 ...
随机推荐
- C# 正整数和非零正整数校验
/// <summary> /// 1. 校验正整数(包含0) /// </summary> public static bool isInterger(string str) ...
- lunix 命令积累
.修改文件的拥有者 chown 用户:用户 文件 .切换账号 su 账号 . 追踪路由信息 traceroute 主机名
- jQuery过滤选择器具体解释
基本过滤选择器 选取第一个元素(:first) //选择第一个div元素. $('#btn1').click(function(){ $('div:first').css("backgrou ...
- nls 字符编码文件对应的国家语言
原文 http://ftp.twaren.net/cpatch/faq/tech/tech_nlsnt.txt * updated by Kii Ali, 12-11-2001 ftp://ftp.n ...
- checkbox-padding 调整checkbox字体跟图标距离
有时候我们会遇到需要调整控件中的内容相对于容器的位置.这里有两种情况 1.linearlayout这样的容器中,包含button类的控件,这时候margin可以调节 2.textview中的文字内容 ...
- error: function declaration isn’t a prototype [-Werror=strict-prototypes]
"warning: function declaration isn't a prototype" was caused by the function like that: ...
- JavaScript--数据结构之栈
4.1栈是一种高效的数据结构,是一种特殊的列表.栈内元素只能通过列表的一端访问,也就称为栈顶.后入的先出的操作.Last in First out.所以他的访问每次是访问到栈顶的元素,要想访问其余的元 ...
- MFC只允许程序单开
很多玩游戏的人都知道一般游戏客户端程序是不允许双开的,就是说在同一游戏在启动的时候,是无法打开多个窗口.很多其他软件如酷狗播放器等也是这样.如果把打开的窗口最小化,这时重新启动程序,最小化的窗口会被显 ...
- asp.net Code学习一(vs code跨平台软件操作)
1.命令行: dotnet new -t web 创建web项目 dotnet new restore build pubilsh run test pack dotnet -info / -h do ...
- .NET中StringBuilder用法实例分析
string s1 = "33"; string s2 = "44"; string s3 = "55"; //需求是把s1 s2 s3拼接 ...