【vim】插入模式与常用编辑操作
vim不像很多编辑器那样一启动便可以直接编辑文本,需要在普通模式按下i, a等键才会进入插入模式进行文本编辑。
如何进入插入模式
以下的命令都会让vim从普通模式切换到插入模式,但命令执行后的字符插入位置有所不同。
| 命令 | 执行后的字符插入位置 |
| i | 当前字符之前 |
| I | 当前行首第一个非空白字符之前 |
| a | 当前字符之后 |
| A | 当前行尾 |
| s | 删除当前字符,光标停留在下一个字符处 |
| S | 删除当前行,光标停留在行首 |
| o | 在当前行的下方插入一个新行,光标停在新行行首 |
| O | 在当前行的上方插入一个新行,光标停在新行行首 |
常用编辑操作
上一篇文章《vim】正常模式下的一般操作》已经提到过,vim中的很多操作都可以指定数量、范围和方向等,编辑操作也不例外。为了简洁,下表不会和上一篇一样根据动作范围不同分类(如单词操作只给出w,不给出W,e,E,b,B等),而是只给出几个经典操作,排列组合的举例在下一小节介绍一些,具体的多种变化还是需要自己在实际使用中尝试和练习。
| 类型 | 命令 | 说明 |
| 复制 | yw | 复制光标后的一个单词 |
| yy | 复制当前行 | |
| <n>yy | 复制以下n行 | |
| yG | 复制当前行到文件末尾的内容 | |
| y%、ya{ | 光标放在{上,复制{}及其内部中的内容 | |
| 剪切/删除 | x | 剪切当前字符,相当于dl |
| X | 剪切前一个字符,相当于dh | |
| dw、cw | 剪切光标后的一个单词,d和c的区别是c会进入插入模式,下同 | |
| D、C | 剪切到行尾,相当于d$,c$ | |
| dd、cc | 剪切当前行 | |
| <n>dd、<n>cc | 剪切以下n行 | |
| dG | 剪切当前行到文件末尾的内容 | |
| J | 在上一行中任意位置按J,将会把下一行合并到这行末尾(Join) | |
| 粘贴 | p | 将剪切板中的内容粘贴到光标后 |
| P | 将剪切板中的内容粘贴到光标前 | |
| 替换 | r | 按下后,再输入字符将替换当前字符 |
| R | 按下后,进入替换模式,将依次替换之后字符 | |
| 撤销 | u | |
| 重做 | <Ctrl>+r | |
| 缩进 | >> | 当前行向右缩进 |
| << | 当前行向左缩进 | |
| <n>>> | 以下n行向右缩进 | |
| <n><< | 以下n行向左缩进 | |
| == | 自动调整当前行的缩进,使之与上下文 | |
| <n>== | 自动调整以下n行的缩进 | |
| gg=G | 自动调整文件所有行的缩进 | |
| 转换大小写 | ~ | 转换当前字符的大小写 |
| guw | 将光标后的单词全部变为小写 | |
| gUw | 将光标后的单词全部变为大写 | |
| guu | 将当前行全部变为小写 | |
| gUU | 将当前行全部变为大写 | |
| 块注释* | 注释 |
假如要将第8行到第16行的内容用//注释掉,步骤是 |
| 取消注释 |
假如要将第8行到第16行用//注释的内容取消注释,步骤是 |
*其中块注释用到了可视模式的操作,这本应该在后面某篇中介绍的,但这个操作很重要,所以在这里介绍一下。取消注释第3步中定位到第16行行首和向右移动选中//两个操作,可以互换。
组合命令示例
y3w 复制光标后3个单词
d2$ 剪切光标到下面第2行的末尾
>} 将当前行到下一个空行之间的内容向右缩进
=% 光标放在{或}上,执行后自动缩进{}中间的内容
3gUU 将以下3行全部变为大写
dt<c> 在当前行内,删除从光标处到后面第1个字符<c>的内容
不常用的编辑操作
. (小数点) 可以重复上一次的命令
<n><Command> 重复某个命令n次
:r!date 插入日期
【vim】插入模式与常用编辑操作的更多相关文章
- 【Linux学习】Vi / Vim编辑器—编辑器工作模式、vi编辑操作
Vi / Vim编辑器-编辑器工作模式.vi编辑操作 推荐一个很好的学习指南:http://www.oschina.net/translate/learn-vim-progressively 一.编辑 ...
- 解决Vim插入模式下backspace按键无法删除字符的问题【转】
本文转载自:https://blog.csdn.net/zxy987872674/article/details/64124959 最近使用某个服务器编辑文件时,快捷键i进入插入模式后,下方不出现in ...
- vim编辑操作
vim 插入模式 a 光标后 A 行尾 o 光标所在行下一行 O 光标所在行上一行 i 光标前 ...
- Vim和Vi的常用命令
Vim 文本编辑器 1.Vim 和 Vi: 两者都是多模式编辑器: Vim 是 Vi 升级版,再兼容 Vi 所有指令的同时增加了一些新功能支持: 特点: 语法加亮:使用不同的颜色加亮代码: 多级撤销: ...
- [转] vi/vim命令模式和编辑模式各种操作
摘要:vi 编辑器是最常用的文档创建和编辑工具,初学者应该学会简单应用vi ,学会在vi 中做简单的修改.删除.插入.搜索及替换作业:如果您是新手,不妨看看本文,或许这篇文档能让您在最短的时间内学会v ...
- vim的几个常用操作
现在很少会有人用vim来写代码,所以vim更常用在server上面编辑配置文件或者少量代码编辑: vim操作命令非常之多,如果仅用作一个配置文件的编辑器,掌握几个常用的操作就够了: 常用的操作其实就是 ...
- VIM 三种模式和常用命令
引言 大数据开发工作中,周围的同事不是用 VIM 就是 Emacs,你要是用 UltraEdit 或 notepad++ 都不好意思跟人家打招呼...什么插件呀.语法高亮呀.拼写检查呀,能给它开的都给 ...
- linux --> VIM的列编辑操作
VIM的列编辑操作 一.删除列 1.光标定位到要操作的地方. 2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行. 3.d 删除. 二.插入列 插入操作的话知识稍有区别.例如在每一行 ...
- 5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践
5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践 进入编辑模式 小写i在当前字符前插入 大写I 在光标所在行的行首插入 大写O 在光标上面一行插入编辑 小写o在光标下面一行插入编辑 小 ...
随机推荐
- 93. Restore IP Addresses(dfs)
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- JS如何判断浏览器类型,如何模拟浏览器类型(模拟微信浏览器)
一.前言 在编写前端代码时,为了页面兼容性,我们往往需要考虑不同的浏览器类型 而这就需要在前端代码中进行识别和区分 接下来就来谈谈对浏览器类型的识别 二.正文 (一).查看浏览器类型的核心代码 var ...
- 最小子串覆盖 · Minimum Window Substring
[抄题]: 给定一个字符串source和一个目标字符串target,在字符串source中找到包括所有目标字符串字母的子串. 在答案的子串中的字母在目标字符串中是否需要具有相同的顺序? ——不需要. ...
- MVC DbContext
指定数据连接,指定表名,移除表名复数化(表名后面不加s),设置字段约束,主外键关系. using MvcApplication1.Models; using System; using System. ...
- update-alternatives命令详解
转载:http://blog.csdn.net/maixia24/article/details/11707289 update-alternatives是ubuntu系统中专门维护系统命令链接符的工 ...
- python实现中文字符繁体和简体中文转换-乾颐堂
需求:把中文字符串进行繁体和简体中文的转换: 思路:引入简繁体处理库,有兴趣的同学可以研究一下内部实现,都是python写的 1.下载zh_wiki.py及langconv zh_wiki.py:ht ...
- Zookeeper 源码(五)Leader 选举
Zookeeper 源码(五)Leader 选举 前面学习了 Zookeeper 服务端的相关细节,其中对于集群启动而言,很重要的一部分就是 Leader 选举,接着就开始深入学习 Leader 选举 ...
- 20155311 2016-2017-2 《Java程序设计》第8周学习总结
20155311 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 通用API: •日志API • 日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用 ...
- UVa 10537 The Toll! Revisited (最短路)
题意:给定一个图,你要从 s 到达 t,当经过大写字母时,要交 ceil(x /20)的税,如果经过小写字母,那么交 1的税,问你到达 t 后还剩下 c 的,那么最少要带多少,并输出一个解,如果多个解 ...
- (字典树)Revenge of Fibonacci -- HDU -- 4099
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4099 要用c++交哦, G++ MLE 不是很懂,先粘上慢慢学习 代码: #include<std ...