VIM基础知识整理(附思维导图)
这是当时初学VIM后做的一个思维导图,图片稍大,所以从freemind导出了html文本po在下面;图片在最下方,放大可清晰浏览。
VIM
- 普通模式
- 普通编辑命令
功能:浏览,普通编辑
x:删除光标所在字符 (=d+h)
X:删除光标前一个字符 (=d+l)
D:删除当前行光标位置到行尾的字符 (=d+$)
dd:删除光标所在的行
J:删除光标所在行的换行符
p:在光标后粘贴
P:在光标前粘贴,粘贴行时,p是粘贴在光标的下方,P粘贴在光标上方
xp:交换两个字符的位置
ddp:交换两行的位置
u:撤销前一个操作
Ctrl+r:恢复前一个操作,可以配合数字n进行n次批量操作;如3x,则删除当前光标及其后两个字符。
注1:删除命令执行后,删除的内容保存在缓冲区。
注2:粘贴命令调用缓冲区内最近的内容。
- 控制命令
- 字符级命令
- h或键盘向左键:光标左移一个字符
- l或键盘向右键:光标右移一个字符
- j或键盘向下键:光标下移一行
- k或键盘向上键:光标上移一行
- 可以配合数字n进行n次批量操作
- 单词级命令
w:下一个单词的词首
W:空白字符分割的下词词首
b:上一个单词的词首
B:空白字符分割的上词词首
e:下一个单词的词末
E:空白字符分割的下词词末
ge:上一个单词的词末
GE:空白字符分割的上词词末
注3:光标在单词内时,b/e命令的结果是移动到本单词的词首/词末
注4:命令前+数字n,执行n次命令
- 行级命令
- $:当前行行尾
- 0(数字0):当前行的第一个字符
- ^:当前行的第一个非空字符
- 移动到指定字符
- f+单个字符:在本行内向右移动到指定字符
- F+单个字符:在本行内向左移动到指定字符
- t+单个字符:在本行内向右移动到指定字符的前一个字符
- T+单个字符:在本行内向左移动到指定字符的前一个字符
- 同样可以在命令前加数字n来定义移动到行呗第几个指定字符
- 使用“;”来查找下一个,“,”来查找上一个
- %:在“( )”、“[ ]”、“{ }”类符号的首尾间切换
- 1G或gg:文本第一行行首
- nG:移动到第n行行首
- n%:按百分比近似定位到某行
- G:文本末行行首
- 屏幕级命令
- H:屏幕顶部行首
- M:屏幕中央行首
- L:屏幕底部行首
- zt:使光标所在位置移动到屏幕的顶部(所有内容做位移)
- zz:使光标所在位置移动到屏幕的中央(所有内容做位移)
- zb:使光标所在位置移动到屏幕的顶部(所有内容做位移)
- ctrl+b:上移一屏
- ctrl+f:下移一屏
- ctrl+u:上移半屏
- ctrl+d:下移半屏
- ctrl+e:上滚一行
- ctrl+y:下滚一行
- 提示信息
Ctrl+g:显示当前行的位置信息(第几行,相对整个文本行数的百分比)(当次生效)
- 保存并退出VIM:ZZ
- 字符级命令
- 替换命令
r:替换当前字符
R:(进入replace模式)持续替换光标所在字符,直到使用ESC退出替换模式。
- 标记mark
- m+[a~z] :在当前光标做标记,如ma
- `+(mark):光标返回指定标记,如`a,则光标返回标记a的位置
- ‘+(mark):光标返回指定标记所在的行,如’a,则光标返回到标记a所在行首
- ‘:回到跳转前的位置
- “:跳转到最后编辑的位置
- 【:最后修改的开始位置
- 】:最后修改的结束位置
- 一些特定的标记可以跳转到其他文本,具体情况以后再做了解
- 普通编辑命令
- “.”命令:重复上一次操作
例:
1:/word1 \\查找单词word1
2:cw word2 \\把word1修改为word2
3:n \\下一个匹配点
4:. \\重复步骤2
“.”命令重复的对象:
普通编辑命令(普通模式下的命令),组合命令(操作符+动作);
不能重复命令行下的命令。
- 多线操作
vim file1 file2 file3...:
可在文本间切换编辑。
:n:进入下一文本
:N:进入上一文本
- 命令行模式
- 设置命令“:”
保存、退出
:+w :保存文本,不退出vim
:+wq:保存并退出vim(不管有否修改,文件修改时间都会更新)
:+x:若有修改,则保存并退出vim,若无修改,则直接退出vim
:+q :未对文本进行修改时,可使用该命令直接退出vim
:+q!:强制退出vim(放弃修改)
:+e!:放弃修改并重新打开该文本
环境设定
:+set nu[mber]:显示行号
:+set nonu[mber]:隐藏行号
:+set ruler:显示光标位置信息
:+set noruler:隐藏光标位置信息
:+set hlsearch:高亮匹配
:+set nohlsearch:取消高亮匹配
:+nohlsearch:临时取消高亮(只取消一次查询的高亮)
:+set ic或ignorecase):忽略大小写
:+set noic(或noignorecase):区分大小写
当前命令忽略大小写:查找命令+\c,如:/test\c,查找test,忽略大小写
:+set incsearch:在输入字符串过程中显示匹配点
:+set nowrapscan:找到文尾后停止查找
:+set wrapscan:恢复为到文尾后自动从头开始
替换(查找然后替换)
:s/old/new/ :当前行的第一个old替换为new(old和new可以是字符也可以是字符串)
:x,ys/old/new/g:x行到y行的所有old替换为new(注意末尾的参数g,不加参数g则只替换每行的第一个old)
参数“x”替换为“.”,则从当前行开始
参数“y”替换为“$”,则到最后一行为止
:%s/old/new/gc:全局替换,替换文本中所有old为new(注意最后的参数“c”,即为每次替换均需要确认)
:+e filename:vim下打开指定文本
:+!command:vim下执行某shell命令
:marks:查看已有的标记
:delmarks 标记名:删除某标记
- 查找命令
/+字符或字符串:在文本内从光标位置向下查找指定字符/字符串
?+字符或字符串:反向查找
查找命令执行后,可使用:
n:查找下一个
N:查找上一个
(对于?查找,移动方向也相应变化)
n/N命令前也可以使用数字n来查第n个
- 退回普通模式:ESC
- 设置命令“:”
- 可视模式
可视模式的功能是选择区域,选择区域后的其他操作参见其他模式!!
v:字符选择,可进行字符的逐个选择;
选中从进入可视模式时的光标位置到当前光标位置的内容,光标控制可以参见普通模式的控制命令以提高效率。
V:按行选择,参照字符选择。
Ctrl+v:列块选择
选择屏幕的一个矩形区域;以进入可视模式时的光标位置为一角,以光标当前位置为对角。光标控制可以参见普通模式的控制命令以提高效率。
o:把光标移动到矩形的对角
O:把光标移动到水平位置的另一角
- insert模式
i:在光标前插入字符
I:在行首插入字符
a:在光标后插入字符
A:在行尾插入字符
o:在光标下发插入空行
O:在光标上方插入空行
s:删除光标位置字符,并进入insert模式 (=c+l)
S:删除光标所在行,并进入insert模式 (=c+c)
C:删除光标位置到行尾的字符,并进入insert模式 (=c+$)
退回普通模式:ESC
- 操作符
三种操作符
d:delete 把选择的内容存入寄存器。
c:change 把选择的内容存入寄存器,使用新的内容覆盖原内容。
y:copy 把选中的内容拷贝到寄存器中。
yw:拷贝一个单词
ynw:拷贝n个单词
ye: 拷贝一个单词,不包括单词结尾空格。
yne:拷贝n个单词。
yy:拷贝一行
nyy:浮躁从光标所在行起的n行,注意n在最前面。
y$:拷贝从当前位置到行尾
yG:拷贝从当前位置到文尾
三种操作符存入寄存器的内容都适用于p/P粘贴命令。
三种操作符与普通命令组合的思想一致!!!
- 操作符+动作
动作:普通模式下的控制命令;动作前有操作符时,动作的作用是覆盖一段文本;动作所走过的轨迹即操作符将要操作的对象。
如:d+w,结果是删除光标位置(含)到下以单词首(不含)直接的字符。
- 可视模式+操作符
- 在可视模式下选择要操作的区域,然后使用操作符进行操作
- 操作符+文本对象
daw:删除一个单词,包含单词的边界(空格)。
da【:删除[ ]整个块,包含符号本身;
da<;da(;da{;da";da'同理
diw:删除一个单词,不含单词的边界。
di【:删除[ ]内的字符,不含符号本身;
di<;di(;di{;di";di'同理
常见文本对象:
ap 一个段落; aW 一个字符串;as 一个句子; at 一个HTML标签
VIM基础知识整理(附思维导图)的更多相关文章
- JavaScript事件基础知识总结【思维导图】
另外附上来自Nicholas C.Zakas<JavaScript高级程序设计 第3版>中的跨浏览器兼容EventUtil对象. var EventUtil = { //注册事件 addH ...
- Vue基础开发入门之简单语法知识梳理(思维导图详解)
基于个人写的以下关于Vue框架基础学习的三篇随笔,在此基础上,做一个阶段性的知识总结,以此来检验自己对Vue这一段时间学习的成果,内容不多,但很值得一看.(思维导图详解)
- 给力Mac下的思维整理软件,思维导图软件合辑
给力Mac下的思维整理软件,思维导图软件合辑 1.Mindjet MindManager for mac 10.0.211 经典的头脑风暴思维导图软件 最新破解Mindjet MindManager ...
- 32、最长有效括号 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(32)最长有效括号 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "滑动窗 ...
- 31、下一个排列 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(31)下一个排列 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "双指针法 ...
- 33、搜索旋转排序数组 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(33)搜索旋转排序数组 一 题目描述! 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 & ...
- 34、在排序数组中查找元素的第一个和最后一个位置 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(34)在排序数组中查找元素的第一个和最后一个位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: / ...
- 35、搜索插入位置 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(35)搜索插入位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "无视要 ...
- 36、有效的数独 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(36)有效的数独 前言 1)码农三少 ,一个致力于 编写极简.但齐全题解(算法) 的博主. 2)文末附赠 价值上百美刀 资料. 一 ...
随机推荐
- 第七篇:数据预处理(四) - 数据归约(PCA/EFA为例)
前言 这部分也许是数据预处理最为关键的一个阶段. 如何对数据降维是一个很有挑战,很有深度的话题,很多理论书本均有详细深入的讲解分析. 本文仅介绍主成分分析法(PCA)和探索性因子分析法(EFA),并给 ...
- 深入tornado中的TCPServer
1 梳理: 应用层的下一层是传输层,而http协议一般是使用tcp的,所以实现tcp的重要性就不言而喻. 由于tornado中实现了ioloop这个反应器以及iostream这个对连接的异步读写,所以 ...
- XSS研究2-来自内部的XSS攻击的防范
引入: 前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击. 实践: http://www.cnblogs.com/crazy ...
- 开涛spring3(3.3) - DI 之 3.3 更多DI的知识
3.3.1 延迟初始化Bean 延迟初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在<bean>标签上指定 “lazy- ...
- 创建发布自己的npm包
我们基于nodejs平台上面的npm上,可以随意下载很多npm安装包.那我们如何创建自己的npm包呢?很简单,废话少说,开始做~ 开始做之前nodejs默认是要安装的,怎么安装自行百度其他教程. 首先 ...
- poi解析excel
一.遇见的问题: 当单元格设置为日期类型时,cell.getCellStyle().getDataFormat()返回的值都为176. poi jar包3.14以上不支持用cell.getCellTy ...
- java zip4j 内存文件和磁盘文件 压缩和加密
经常服务器需要对文件进行压缩,网络上流传较多的是从磁盘文件中来压缩成zip文件.但是常常服务器的文件存放在内存中,以byte[]形式存储在内存中.这个时候就不能使用网络上流传的常用方法了,这里就需要对 ...
- 基于nodejs 的多页面爬虫
前言 前端时间再回顾了一下node.js,于是顺势做了一个爬虫来加深自己对node的理解. 主要用的到是request,cheerio,async三个模块 request 用于请求地址和快速下载图片流 ...
- 用border或者div制作三角形等图形
一般情况下, 我们设置盒子的宽高度, 及上下左右边框, 具体代码如下: 通过上述代码,div的具体样式如下: 现在在上面基础上, 我们把div的宽高度都设为0时, 现在我们再次查看效果,如下图: 这时 ...
- 图解Git命令
上面的四条命令在工作目录.暂存目录(也叫做索引)和仓库之间复制文件. ·git add files把当前文件放入暂存区域. ·git commit 给暂存区域生成快照并提交. ·git reset - ...