Vim技巧之四大模式_普通模式
Vim技巧之四大模式_普通模式
众所周知,vim里面最具特色的东西就是它能够切换模式,那什么是模式呢?能够简单的理解为在不同的模式以下按同样的键而得到不同的效果。比方Vim在插入模式以下连按两次d,那么就会在光标位置插入两个字母d,假设在普通模式以下连按两次d。那么光标所在当前行将会被删除。
既然说是Vim的四大模式,那么Vim究竟有那四大模式呢?
- 普通模式
- 插入模式
- 可视模式
- 命令行模式
用户能够通过按<ESC>来在各个模式之间进行切换,以下我们将具体的介绍普通模式,其它模式我们将在兴许的文章中进行具体介绍
一见不钟情的普通模式
像Emacs,Sublime Text这些主流的编辑器在打开以后直接就能够向里面输入自己的想要的内容。可是对于第一次使用Vim的新手来说,并不和自己想象中的一样,倒腾了一会儿就会開始抓狂:
- 怎么在这个框框里面输入文本啊?
- 天啦噜,怎么退出这个黑框框???。!
(博主一開始都是kill -9关掉的。哭死)
Vim在开启的时候默认是使用普通模式的,例如以下图所看到的
假设你须要在这个黑框框里面输入一些什么东西的话,你能够在屏幕上按以下随意一个健。Vim就会进入插入模式。接着就能够输入文本了
| 按键 | 功能 |
|---|---|
| a | 在光标后面进行插入 |
| A | 在当前光标所在行末尾插入 |
| i | 从光标所在出插入 |
| I | 在当前光标所在行首插入 |
| o | 在当前行以下新建一行,并进行插入 |
| O | 在当前行上面新建一行。并进行插入 |
那要是退出插入模式回到之间的普通模式呢?直接按<ESC>就能够啦
这时候你可能就会问了。不是有一个插入模式就能够了么?为啥还要加一个普通模式呢?你看其它编辑器都没有这么多的模式。。。这就是Vim的精化所在,对于其它编辑器来说,假设要实现一个比較复杂的操作,基本上都是通过<Ctrl>,<Alt>,<Shilt>组合来完毕的,可是Vim偏不这样,Vim是通过在不同模式之间的切换来实现复杂的操作。简单来说。普通模式就是用来发动技能的。而插入模式则是进行简单的文本操作
比方须要删除当前光标所在行,对于没有模式的编辑器是这样发动这个技能的
<CTRL-K>(Emacs)
<CTRL-L><Backspace>(Sublime Text)
假设是Vim,那么首先进入普通模式,然后发动删除行的技能
<ESC>(进入到普通模式)。dd(删除当前行)
个人还是比較喜欢Vim一点。简洁明了。之前也试过Ctrl到死的Emacs,组合按键真是多。对与手小的人来说简直就是一种折磨!
普通模式以下的强悍操作
普通模式以下的操作能够解释为以下这个公式:
什么是操作符?
操作符就是你打算接下来要干什么?比方上文中提到的d,就是删除操作符,除了删了操作符。还有以下这些操作符:
| 操作符 | 用途 |
|---|---|
| c | 改动 |
| d | 删除 |
| y | 复制 |
| g~ | 大写和小写反转 |
| gu | 转为小写 |
| gU | 转为大写 |
| > | 向右缩进 |
| < | 向佐缩进 |
| = | 自己主动缩进 |
什么是动作命令?
操作符是用来指定一个操作,这个操作也不能瞎操作吧?我要删除一行文本,不能把整个文件的所有内容都给删了吧。。。所以,简单来说。动作命令就是用来指定操作符作用的范围
那动作命令有那些呢?事实上动作命令比較灵活,这里我总结为有两类:
- 一类是文本对象,比方aw , ap
- 一类是位置范围, 比方l ,j,k,f{char},$,^,0…
文本对象类型的动作命令
| 文本对象 | 操作范围 |
|---|---|
| aw | 光标所在单词加上一个空格 |
| iw | 光标所在单词 |
| ap | 光标所在段落 |
| i< | <>里面的文本 |
| i{ | {}里面的文本 |
| i” | ""里面的文本 |
假设如今有这样一行文本
I am a Vimer
我们须要删除Vimer这个单词
$(移动到行尾)
daw(删除光标所在单词以及一个空格)
最后得到:
I am a
位置范围类型的动作命令
那什么是位置范围呢?就是从当前光标開始,经过一次移动命令以后新的光标位置之间的文本。比方3j,10<Space>,3l,f{char}等等等等。仅仅要能够移动光标的命令都能够
假设如今有这样一行文本
I am a Vimer
我们要将Vimer这个单词字幕e之间的文本所有转为大写
0(移动到行首)
gUte(操作符(gU)+(新的光标位置te))
最后得到:
I AM A VIMer
注意一点:
当一个操作符当被连续两次调用的时候。相应的作用范围就是当前行,比方dd就是删除当前行,yy就是复制当前行,gUgU就是将当前行转为大写
误操作怎么办?
我们能够切换到普通模式。然后u,就能够撤消之前进行的误操作,比方用dd误删了一行文本。我们直接输入u就能够撤消之前的删除操作
以下我们来看一个栗子:
输入一行文本
I am a Vimer
发现将Vimer误输为Vier,于是返回到普通模式,点击u希望撤消这个错误的单词输入,可是惊奇的发现之前输入的I am a文本也不见了,Vim撤消的太多了。!
那该怎么办?怎么控制Vim撤消的粒度呢?
u键会触发撤消命令,它会撤消最新的改动。一次改动能够是改变文档内文本的随意操作,当中包含了在普通模式,可视模式。以及命令行模式中所触发的命令,并且一次改动也包含了在一次插入模式中输入或者删除的文本,也就是说i{insert some stuff}<ESC>算是一次改动
所以我们还是能够控制u撤消的粒度的。在插入模式中。每一次<ESC>就算是一次粒度的控制
那种操作更划算?
什么叫做划算?那就是用最少的按键操作完毕很多其它的文本操作
举个栗子:
如今须要删除以下文本的最后一个单词
I am a Vimer
操作一:
$
db(向前删除单词)
x(删除x)
操作二:
$
b(最后一个单词的词首)
dw(删除单词)
操作三:
$
daw
上面三个操作都是用同样的按键数。这一步上大家打成平手,要是我们还要把剩下的两个单词都删除呢?前两个操作明显还须要从头反复一次。可是第三个操作我们仅仅须要用.操作就能够反复改动命令,所以操作三明显更划算!所以划算的更宽广的定义不仅是当前操作,还有将来的操作也要计算进来
普通模式下的神奇大招
这个神奇大招事实上就是
<C-a>:对数字进行加操作<C-x>:对数字进行减操作
<C-a>命令会把当前光标之上或者之上的数加1,假设须要加多次,能够[count]<C-a>,这样就会使数值加上count
举个栗子:
现有一段文本:
I am 23 years old
如今须要将23改为24,假设如今你不知道这个技巧,那就仅仅有
f3(移动到3)
r4(将3改为4)
未免太繁琐了
如今我们仅仅须要
<Ctrl-a>(光标立刻跳转到23上,并将数值加1,变为24)
要是如今需将23改为1023(千年老妖了)
仅仅须要
1000<Ctrl-a>
同理可得<C-x>
Vim技巧之四大模式_普通模式的更多相关文章
- Vim技巧之四大模式_插入模式
Vim技巧之四大模式_插入模式 在插入模式中及时更正错误 插入-普通模式 在插入模式模式以下直接粘贴指定寄存器的内容 插入模式中做运算 用字符编码插入很常使用字符 替换已有的文本 Vim技巧之四大模式 ...
- 【LabVIEW技巧】工厂模式_简单工厂
前言 上一个文章介绍了如何学习LabVIEW OOP,简要的提及了一些OOP学习中注意的事项,许多文章的读者反映写的太范,后文会逐步缩小范围,讨论在LabVIEW中各个模式的应用. 工厂模式概述 工厂 ...
- 技巧:Vim 的纵向编辑模式【转】
转自:https://www.ibm.com/developerworks/cn/linux/l-cn-vimcolumn/ 张 曜民 和 卢 丹2011 年 2 月 18 日发布 WeiboGoog ...
- 技巧:Vim 的纵向编辑模式
https://www.ibm.com/developerworks/cn/linux/l-cn-vimcolumn/ 开始之前 人类大脑对文字的处理是平面式的,所以我们浏览文章.查找资料或者重构代码 ...
- 【转载】技巧:Vim 的纵向编辑模式
如果要我选一个Vim中让我觉得Life Changing功能的话,我一定会选Vim的块编辑功能,也就是Ctrl+V,虽然还有些别的编辑器也有这功能,但目前为止,我从中受益颇大 原文地址:技巧:Vim ...
- vim的四大模式
vim的四大模式 总结了下我经常使用的模式中的一些基本命令 正常模式 通过vim进入到界面, 首次即为正常模式 编辑模式 (i,a,o,s,I,A,S) i: 当前节点插入光标点 a: 下一个字母后插 ...
- 最佳vim技巧
最佳vim技巧----------------------------------------# 信息来源----------------------------------------www.vim ...
- vimcommandfilepatchcmdfold VIM技巧之分隔窗口 一级精华
VIM技巧之分隔窗口 分类: 技术2010-07-08 09:57 754人阅读 评论(1) 收藏 举报 同时显示两个不同的文件, 或者同时查看同一个文件的两个不同位置, 或者是同步显示两个文件的 ...
- vim技巧2
vim技巧总结-查找 1.查找命令1.1 执行一次查找普通模式下,/会调用查找提示符,如果vim扫描到文档尾部仍没有找到目标,会提示"search hit BOTTOM, continuin ...
随机推荐
- 【NOIP2016】DAY1 T2 天天爱跑步
[NOIP2016]DAY1 T2 天天爱跑步 Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.?天天爱跑步?是一个养成类游戏,需要玩家每天按时 ...
- UNIX环境高级编程--8. 进程控制
进程控制进程标识: 每一个进程都有一个非负整型表示的唯一进程ID.虽然唯一,但是ID可以复用.当一个进程结束后,其进程ID会被延迟复用. ID=0的进程通常是调度进程,常被称作交换进程(s ...
- Elasticsearch之CURL命令的mget查询
我这里, 再,创建一个zhouls2的索引库. [hadoop@master elasticsearch-]$ curl -XPUT 'http://master:9200/zhouls2/' {]$ ...
- JdbcTemplate:Jdbc模板和数据库元数据
通过 Jdbc .C3P0 .Druid 的使用我们会发现即使我们做了工具的封装,但重复性的代码依旧很多.我们可以通过 JdbcTemplate 即 Jdbc 模板来使我们的代码更加简洁,逻辑更加清晰 ...
- [Windows Server 2008] 安装IIS7.5及FTP
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装IISII ...
- [系统]no such partition
电脑系统是win8.1+ubuntu14.2,为了卸载ubuntu,安装CentOS,于是在win8.1下把ubuntu的分区给删除了,重启,出现no such partition grub resc ...
- ABP初始化
默认认为你手中已经有abp-zero项目,当前4.6.0 angularJS切换到jquery 运行项目,初始化是跳转到~/App/common/views/layout/layout.cshtml, ...
- (转) Hibernate框架基础——操纵持久化对象的方法(Session中)
http://blog.csdn.net/yerenyuan_pku/article/details/52761021 上一篇文章中我们学习了Hibernate中java对象的状态以及对象的状态之间如 ...
- html table内容不随标题滚动
<html><head></head><body> <div> <div id="demo" style=&quo ...
- ubuntu下Fiddler抓包
参考 https://www.cnblogs.com/jcli/p/4474332.html https://www.jianshu.com/p/4505c732e378 1. 你要有个Mono环境, ...