vim使用技巧二 模式
第一部分模式
工欲善其事,必先利其器 准备工作必不可少
技巧8 把撤销单元切成块
u键 会除法撤销命令,它会撤销最新的修改 一次修改可以是改变文档内文本的任意操作,其中包括在普通模式,可视模式以及命令行模式中所触发的命令,也包括在插入模式中输入或删除的文本
i <ESC> 是一次修改
不同的文本编辑器 有不同的撤销粒度 一种是它可能会撤销最后输入的字符,另一种可能会把字符分成块,使每次撤销操作删除一个单词而不是一个字符。
在vim中我们自己可以控制撤销命令的粒度,从进入插入模式开始,直到返回普通模式为止,在此期间输入或删除的任何内容都被当成一次修改,因此,只要我们控制好对<ESC>键的使用,就可使撤销命令作用与单词、句子或段落。
每次的ESC键都控制着u键撤销的单位 也即撤销块
输入文件时 当前光标在行尾,如果想拥有更细的粒度,可以用<ESC>o替换<CR> 即每次撤销涉及的仅限于一行的内容
注意在插入模式中移动上下左右光标键 会产生新的撤销块,可以想象为现切换回普通模式,然后用hjkl命令进行光标的移动 会对.命令产生影响
技巧9 构造可重复的修改 思考用到.的命令构造方式
删除行尾的单词 当前光标位于行尾的单词最后一个字符上
例如 the end is nigh
当前光标位于h上,想要删除nigh
1.反向删除
db the end is h 向前删除一个单词 但是会保留当前光标处的最后一个字符
x the end is 删除上面的h字符
.代表执行x命令 仅仅删除一个字符
2.正向删除
b the end is nigh 当前光标位于n处
dw the end is 删除n及所在的单词
.代表 dw 未移动光标 仅仅删除一个单词 无意义
3.删除整个单词
daw the end is aw代表一个单词的意思 为一个命令 daw为删除一个单词
. 能够删除一个单词 .=daw 更有意义
技巧10 用次数做简单的算术运算
<CTRL-a> 和<CTRL-x> 命令分别对数字执行加和减操作
例如 光标在5上 按10<CTRL-a> 值就会变为15 如果当前光标不在数字上 则会在当前字符串中向后搜索数字并定位光标到数字上 再操作
例 .blog {background-position:0px 0px}
要求 复制一行 修改.blog为.news 并将第一个0px中的0改为-180
1. yyp 复制一行 并粘贴
2. cw.news<ESC> 修改第一个单词 为.news
3. 180<C-x> 0-180=-180
注意:
007数字在vim中被当做8进制 +001=010
如果想让数字全部被当做10进制,需要在vimrc中添加“set nrformats=”
技巧11 能够重复 就别用次数
delete more than one word
方式1: d2w 先删除命令 2w为动作命令 这里的修改是d2w .=d2w
方式2: 2dw 2次 删除单词 这里的修改是2dw
方式3: dw. 删除单词 用.重复操作 这里的修改是dw
建议 如果要删除数量不多的连续7个单词 可以d7w 也可dw...... 6个点
后者更好 粒度细 省略计算个数的时间
使用次数的场景
将i have a couple of questions改为i have some more questions
c3wsome more<ESC> 前提条件将光标移动到a上
用次数的另一个好处是 可以保留一个干净、连贯的撤销历史记录 一次u键就可以撤销整个修改
技巧12 双剑合璧 天下无敌
操作符+动作命令=操作
vim的操作符命令
命令 用途
c 修改
d 删除
y 复制到寄存器
g~ 反转大小写
gu 转换为小写
gU 转换为大写
> 增加缩进
< 减小缩进
= 自动缩进
! 使用外部程序{motion}所跨越的行
d{motion} 命令可以对一个字符dl 一个完整单词 daw 或一整个段落dap 作用范围由动作命令决定
c{motion}
y{motion}
g~ 切换大小写 反转
gu 切换成小写
gU 切换成大写
vim的语法仅有的一条额外规则 当一个操作符命令被连续调用两次时,会作用与当前行
例如 dd删除当前行 >>缩进当前行
扩展命令组合的能量强大
有vim缺省的操作符和动作命令
也有通过自定义动作命令及操作符来进一步扩充其数目
可以通过 :h :map-operator来查看如何创建自定义的操作符
:h omap-info来查看如何创建自定义的动作命令
例如commentary.vim插件 textobj-entire插件
操作符待决模式
普通 插入及可视模式很容易辨识 例如在dw时会激活待决模式 通常只持续不到一秒时间 仅仅在d及w键之间的短暂时间间隔内存在。
将vim看成有限状态机 操作符待决模式就是一只接受动作命令的状态 此状态在我们调用操作符时被激活,然后什么也不做,直到我们提供了一个动作命令,完成整个操作。
:h g :h z :h ctrl-w 通常头一个按键仅仅是第二个按键的前缀 这些命令不会激活操作符待决模式 相反可以把他们看成命名空间namespace 用来扩充可用命令的数目 只有操作符才会激活操作符待决模式。
vim使用技巧二 模式的更多相关文章
- 技巧: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 常用技巧: 将回车由默认的8个空格改为4个空格: 命令:set sw=4 修改tab为4空格: 命令:set ts=4 设置每一级的缩进长度: 命令:set shiftwidth=4 设置文件 ...
- Vim使用技巧汇总
一 写在开头 1.1 本文内容 Vim使用技巧与学习资源汇总. 二 Vim学习资源 1. Vimtutor 2. Vim中文帮助(http://vimcdoc.sourceforge.net/doc/ ...
- Linux系统配置VI或VIM的技巧
Linux系统配置VI或VIM的技巧作者:IT专家网论坛出处:IT专家网论坛2008-10-28 11:08配置VI和VIM的颜色显示,使它能够高亮度显示一些特别的单词,这对编写程序很有用⋯⋯ 1.V ...
- 转载: vim使用技巧
两篇很牛的vim使用技巧 来源: ChinaUnix博客 日期: 2009.07.06 10:18 (共有条评论) 我要评论 读本文之前请注意:1. 本文的目标是提供一些vim的使用技巧,利用 ...
- 《Vim实用技巧》第2版读书笔记
学习前的建议: 一.如果你需要一个功能强大的文本编辑器,速度飞快.使用方便.代码补全.编程强大.定制性强,Vim就是你需要的: 二.学习入门曲线陡峭,但是使用后期异常简单,效率超高: 三.号称可以跟上 ...
- vim gvim技巧大全(9)(转载)
vim gvim技巧大全(9) 2 用命令}移动到这个段落的底部,标记为b3 输入命令:'a,'b move来移动文本.老版本的Vi编辑器不能很好的来处理多文件.但是Vim在处理多文件上却显得优秀得多 ...
随机推荐
- React 实践记录 02 Flux introduction
Introduction 本文组成: React 官方文档翻译 相关实践心得. 内容上是Flux的介绍,例子将会在以后写出. 一旦稍微多了解一点React,很难避免听到Flux这个名词. Flux是一 ...
- 1102 采药 2005年NOIP全国联赛普及组
1102 采药 2005年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 辰辰是个天资聪颖的孩子 ...
- Web开发者应掌握的12个Firebug技巧
来源: 廖煜嵘 相信很多从事Web开发工作的开发者都听说和使用过Firebug,但可能大部分人还不知道,其实它是一个在网页设计方面功能相当强大的编辑器,它 可以对HTML.DOM.CSS.HTTP和J ...
- echarts getAttribute”的值: 对象为 null 或未定义 错误解决方法,
echarts.js引用放在head中或者放在body中HTML代码的前面了,造成加载时阻塞后面的html. 解决方法就是将echarts.js的引用放在</body>之前就可以了,完美解 ...
- 最新深度ghost win7系统下载
深度技术ghost win7系统 64位快速安装版 V2016年2月,深度技术ghost win7 64位快速安装版在不影响大多数软件和硬件运行的前提下,已经尽可能关闭非必要服务,自动安装AMD/In ...
- LeetCode Isomorphic Strings 对称字符串
题意:如果两个字符串是对称的,就返回true.对称就是将串1中的同一字符都一起换掉,可以换成同串2一样的. 思路:ASCII码表哈希就行了.需要扫3次字符串,共3*n的计算量.复杂度O(n).从串左开 ...
- ubuntu 14.04 安装redis
root@hett-PowerEdge-T30:~# sudo apt-get install redis-server Reading package lists... DoneBuilding d ...
- Session 机制和 Cookie 机制
Session 机制和 Cookie 机制 HTTP协议是无状态的, 而Cookie和Session都是在无状态的基础上希望实现有状态的效果, 两者是在客户端或者是服务端使用缓存等手段来实现状态的维护 ...
- python_113_socket编程
Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递. 我们知道网络 通信 都 是基于 ip+port 方能 ...
- javase(5)_面向对象
一.概述 1.面向对象是一种思想,让我们由执行者变成指挥者,执行者是面向过程,指挥者是面向对象.例如人开冰箱门,开冰箱门这个动作应该属于门而不是人,冰箱自己最清楚门应该怎么开,人只是调用了冰箱的这个动 ...