Vim使用教程
Better, Stronger, Faster
首先Vim有三种模式:
Normal
该模式下不能写入,修改要在该模式进行。在Insert模式中可以使用ESC键来返回到Normal模式。Insert
该模式下可以进行写入。在Normal模式下使用按i键进行Insert模式。-
Visual
该模式是可视模式,可以选中, v进入字符可视模式。 V进入行可视模式。Ctrl+v进入块可视模式。Ctrl+v进入后使用j/k选中多行同一列,按I输入内容,再按ESC键等一秒后会在所有选中行都插入该内容,是批量增加注释的神器。下面说一下
Normal状态下的一些命令,所有的命令都要在Normal状态下执行:
进入Insert模式
i进a追o开行,小写动作在光标,大写动作到行尾
i进入insert模式a(append)在光标后进行插入,直接进入insert模式o在下一行插入新行O在上一行插入新行I在行首插入A在行尾插入
在VIM中,有相当一部分命令可以扩展为3部分:
- 开头的部分是一个数字,代表重复次数;
- 中间的部分是命令;
- 最后的部分,代表命令的对象。
比如,命令3de中,3表示执行3次,d是删除命令,e表示从当前位置到单词的末尾。整条命令的意思就是,从当前位置向后,删除3个单词。类似的,命令3ce表示从当前位置向后,删除三个单词,然后进入编辑模式。
可以看到,命令组合的前两个部分比较简单,但第三个部分也就是命令对象,技巧就比较多了。所以接下来,我就与你详细介绍下到底有哪些命令对象可以使用。
其实,对命令对象并没有一个完整的分类。但我根据经验,将其总结为光标移动命令和文本对象两种。
第一种是光标移动命令。比如,$命令是移动光标到本行末尾,那么d$就表示删除到本行末尾;再比如,4}表示向下移动4个由空行隔开的段落,那么d4}就是删除这4个段落。
移动光标
h左移: 在键盘的最左边j移到下一行 : 像向下的钩子k移到上一行l右移: 在键盘的最右边
gg跳到文件开头-
G跳到文件结尾 -
$行尾 0行首-
^行首第一个非空字符 -
e向右移动一个单词 (end) w向右移动一个单词,与e的区别是w是把光标放到下一个单词的开头,而e是把光标放到这一个单词的结尾。 (word)b移动到上一个单词开头 (back):59移动到59行#l移动光标到该行第#个字的位置,如5l-
f字符跳到行内下一个指定字符,如fa 跳到下一个a -
ctrl+g列出当前光标所在行的行号等信息
ctrl+b:向上滚动一屏 backwardctrl+f:向下滚动一屏 forwardctrl+u:向上滚动半屏 upctrl+d:向下滚动半屏 down
删除文字
x删除光标所在位置的一个字符#x删除光标所在位置后的#个字符,如6x就是删除后面的6个字符。X大写的X为删除光标所在位置前的一个字符#X删除光标所在位置前的#个字符dd删除当前行,并把删除的行存到剪贴板中d$删除到行尾d0删除到行首dw删除一个单词di"删除双引号中的内容 delete insideda"删除双引号中的内容以及双引号 delete alldi(删除括号中的内容#dd从光标所在行开始删除#行。如5dd就是删除5行v/ctrl+v: 使用h、j、k、l移动选择内容,然后按d删除。其中v是非列模式,ctrl+v是列模式
修改
cc修改整行(清空并进入插入模式)cw修改一个单词c$修改到行尾
复制粘贴
yy拷贝当前行#yy拷贝当前所在行往下的#行文字yw复制当前光标所在位置到字尾处的位置#yw复制当前光标所在位置往后#个字y$拷贝光标至本行结束位置-
y拷贝选中部分,在Normal模式下按v会进入到可视化模式,这时候可以上下移动进行选中某一部分,然后按y就可以复制了。 -
p在光标所在的位置向下开辟一行,粘贴 P在光标所在的位置向上开辟一行,粘贴- 剪切: 按dd或者ndd删除,将删除的行保存到剪贴板中,然后按p/P就可以粘贴了。
替换
r替换光标所在处的字符R替换光标所到之处的字符,直到按下esc键为止:%s/old/new/g用new替换文件中所有的old:%s/old/new/gc,同上,但是每次替换需要用户确认:s/old/new/g光标所在行的所有old替换为new:s/old/new/光标所在行的第一个old替换为new
记忆技巧: 百分号(%)斯(s)老(old)虎(new)狗(g), s是substitute替换的意思, g是global全局的意思, c是confirm确认的意思。
撤销
u撤销、回退ctrl + r恢复刚才的撤销操作
搜索
-
/关键字先按/键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往后寻找到您要的关键字为止。N是上一个匹配。 -
?关键字同上,只不过?是往上查找
缩进缩出
>>当前行缩进#>>当前光标下n行缩进<<当前行缩出-
#<<当前光标下n行缩出 -
: set nu会在文件每一行前面显示行号 :wq保存并退出:w保存:q!退出不保存:saveas <pat>另存为:e filename打开文件- `:sav filename 保存为某文件名
- ZZ: 命令模式使用大写ZZ直接保存并退出
单词记忆技巧
动词:
- d : 删除delte
- y : 复制 yank
- c : 修改 change
- v : 选中 visual
- p : 粘贴 paste
名词:
- w : 单词 word
- s : 句子 sentence
- p : 段落 paragraph
- i : 内部 inside
- a : 整个 around
寄存器,Vim提供了很多寄存器,如果我们想要把vim中复制的内容放到系统的粘贴板中, 就需要指定寄存器:
"+: Linux/Windows/Mac通用
例如:
"+yy: 复制当前行内容到系统粘贴板- v选中内容后使用
"+y复制选中内容到粘贴板
- 邮箱 :charon.chui@gmail.com
- Good Luck!