用Vim优雅的编辑
来源:互联网 发布:女用避孕套 知乎 编辑:程序博客网 时间:2024/06/05 15:49
这篇文章首发于我的博客,转载可注明出处。
Vim是从vi发展起来的一个超简洁的文本编辑器,全称为
Vi IMporved
。使用vim可以实现全键盘操作,摆脱鼠标操作痛苦。
Vim简介
Vim的设计理念是命令的组合。在Vim中可以使用各种各样的组合命令来完成我们的编辑。模式是一个编辑器所必备的,几乎所有的编辑器都会有插入和执行两种模式,可以用键盘和鼠标完成模式的切换和命令的执行。Vim具有挺多种模式,常用的有普通模式、插入模式、可视模式和命令行模式。
其中Vim强大的编辑能力有很大一部分来源于它的普通模式,而普通模式的强大就在于命令的组合。在本文的后半部分我们将看到普通模式下的一些常用命令。
在正式开始盛宴之前,我们先来几条小小的约定。
1. 停顿时请移开画笔。
不同于其他编辑器将插入模式作为默认状态,普通模式才是Vim的默认状态。所以,只在编写代码的那几分钟内进入插入模式,其他时候请保持普通模式。
2. 告别esc
,远离方向键。
Vim可以有两种方式实现普通模式和插入模式之间的切换,esc
和<C-[>
(就是Control+[
),可两种方式都很难操作,esc
太远,Control
偏下,为此我们可以尝试调换Capslock
和Control
的位置,并将<C-[>
作为默认切换方式。
方向键由于距离太远将会极大的减缓我们的操作效率,Vim中我们将用hjkl
分表代表上下左右。
3. 强大的重复操作符.
之所以将它放在约定中,是因为使用重复操作会呈几何倍数的提高我们的效率。.
命令可以重复修改上次的操作,它是Vim中最强大的多面手。
插入模式
前面提到大部分命令在普通模式下执行,不过有些功能在插入模式下可以更好的执行。
<C-a>
跳转到当前行首<C-b>
向前移动一个单词<C-d>
减少缩进<C-h>
删除前一个字符(同Backspace
)<C-k>
删除当前行光标后面的内容<C-w>
删除前一个单词<C-u>
删除至行首<C-t>
增加缩进
这里只列出几个较常用的,更多可以查看:help insert-index
,里面有很详细的命令解释,另外这些命令并不是Vim独有的,在shell中一样可以用。
普通模式
普通模式下我们可以执行大多数操作,并可以将操作符和动作命令结合起来实现强大的功能。还记得怎么进入普通模式吗?对了,就是<C-[>
。
1. 移动和跳转
单行跳转
h
左移一个字符j
下移一个字符k
上移一个字符l
右移一个字符10h
向下移动10行
单词跳转
w
跳到下一个单词的词首e
跳到下一个单词的词尾b
跳到上一个单词的词首nw
跳转到后面第n个单词
行内跳转
^
跳到当前行的开头(忽视行首空格)0
或|
跳到当前行的开头(包括行首空格)$
或 跳到当前行的行尾g _
跳到当前行的行尾(不包括空格)f x
跳到本行的下一个x处F x
跳到本行的上一个x处;
重复上一次跳转n|
跳到当前行的第n列
文档内跳转
gg
跳到文档第一行G
跳到文档最后一行ngg
或nG
跳到文档的第n行+
跳到下一行行首-
跳到上一行行首
当前屏幕跳转
H
移动到当前屏幕的顶端M
移动到当前屏幕的中间L
移动到当前屏幕的底端
移动当前行
zz
移动当前行到中间zt
移动当前行到屏幕顶端zb
移动当前行到屏幕底端
2. 搜索和标记
文档内检索
/
+xxx
查找xxx*
查找下一个光标所在的单词#
查找上一个光标所在的单词n
跳到下一个查找的单词N
跳到上一个查找的单词:noh
取消本次高亮
文档内标记
m x
标记当前位置为x' x
跳到标记为x的位置' '
跳到跳转之前的位置
3. 即时执行操作
切换到插入模式
i
插入到光标前a
插入到光标后I
插入到当前行的开始A
插入到当前行的末尾o
向下插入一行O
向上插入一行
普通模式下编辑
r
修改当前字符(改完后自动切换)R
修改自光标起及之后的字符(需手动切换到普通模式)x
删除当前字符X
删除光标前的字符s
删除当前字符并进入插入模式S
删除当前行并进入插入模式c
修改(一般用于合成命令)d
剪切(一般用于合成命令)y
复制(一般用于合成命令)dd
删除当前行yy
复制当前行p
粘贴到当前行的下方P
粘贴到当前行的上方~
大小写反转
撤销和恢复撤销
u
撤销上一步操作<C-r>
恢复上一步操作
缩进
>
增加缩进<
减少缩进=
自动缩进
可视模式
Vim的可视模式类似于其他编辑器按住鼠标拖动选择区域,却又有些许不同,在可视模式下可以使用普通模式的命令来操作。
激活可视模式
v
激活面向字符的可视模式V
激活面向行的可视模式<C-v>
激活面向列的可视模式gv
重选上次的高亮区域
切换可视模式
o
在可视模式下可以切换选取的活动端
命令模式
在命令模式下我们可以为Vim开辟一块新天地。命令模式下,可以使用复杂的命令。在编辑模式下键入:
,光标就跳到屏幕最后一行,并在那里显示冒号,此时已进入命令模式。这篇文章不过多介绍命令模式。
打开、保存和退出
:e test.txt
在打开的vim中打开test.txt文件:w
保存当前文件:q
退出当前文件:w test2.txt
另存文件为test2.txt(原文件依然存在):qall
退出多个文件:q!
强制退出当前文件(所做的修改将不会保存):wq
保存并退出当前文件
分屏
:sp(lit)
上下分屏:vsp(lit)
左右分屏<C-w>
+hjkl
在不同屏之间切换
标签页
:tabnew
新建标签页:tabnew filename
在新标签页中打开文件:tabn(ext)
跳到下一个标签页:tabN(ext)
跳到上一个标签页:tabfir(st)
跳到第一个标签页:tabl(ast)
跳到最后一个标签页:tabo(nly)
关闭除当前标签页以外的其他标签页
芳草有情皆碍马,好云无处不遮楼。编辑器加IDE成百上千,没有孰好孰坏,只要是对的便是最好的。学问,重在内功修炼。
- 用Vim优雅的编辑
- Vscode优雅的编辑python
- Vim编辑的使用
- vim编辑的缩进
- linux的vim编辑
- VIM的列编辑
- 用vim编辑二进制文件
- 对vim配置文件的编辑
- VIM编辑命令的技巧
- Vim的命令行编辑笔记
- 普通人的编辑利器Vim
- Vim 的纵向编辑模式
- Vim 的纵向编辑模式
- VIM编辑命令的技巧
- VIM的列编辑操作
- 程序员的编辑利器----VIM
- VIM的常用编辑命令
- VIM的纵向编辑模式
- 高斯曲率求表面极值点
- 【Weblogic】Weblogic Server环境下JNDI命名服务
- SQL——数据库实验一
- 基础巩固--堆栈轨迹
- ubuntu mysql多实例配置
- 用Vim优雅的编辑
- Python 2和3
- java 中的e和e.printStackTrace()方法
- 关于Java泛型实现原理的思考与一般用法示例总结
- 产品测试过程
- JAVA | 18
- Servlet中的监听器简介
- python学习---第三天
- 欢迎使用CSDN-markdown编辑器