Vim使用教程
Better, Stronger, Faster
首先Vim
有两种模式:
Normal
该模式下不能写入,修改要在该模式进行。在Insert
模式中可以使用ESC
键来返回到Normal
模式。Insert
该模式下可以进行写入。在Normal
模式下使用按i
键进行Insert
模式。
下面说一下Normal
状态下的一些命令,所有的命令都要在Normal
状态下执行:
进入Insert
模式
i
进入insert
模式a(append)
在光标后进行插入,直接进入insert
模式o(open a line below)
在当前行后插入一个新行,直接进入insert
模式O
大写的O是在光标所在的行下面插入一个新航,直接进入编译模式I
从该行的最前面开始编辑A
从该行的最后面开始编辑s
删除光标后的字符,从光标当前位置插入S
删除光标所在当前行,从行首插入cw
替换从光标位置开始到该单词结束位置的所有字符,直接进入Insert
模式
在VIM中,有相当一部分命令可以扩展为3部分:
- 开头的部分是一个数字,代表重复次数;
- 中间的部分是命令;
- 最后的部分,代表命令的对象。
比如,命令3de中,3表示执行3次,d是删除命令,e表示从当前位置到单词的末尾。整条命令的意思就是,从当前位置向后,删除3个单词。类似的,命令3ce表示从当前位置向后,删除三个单词,然后进入编辑模式。
可以看到,命令组合的前两个部分比较简单,但第三个部分也就是命令对象,技巧就比较多了。所以接下来,我就与你详细介绍下到底有哪些命令对象可以使用。
其实,对命令对象并没有一个完整的分类。但我根据经验,将其总结为光标移动命令和文本对象两种。
第一种是光标移动命令。比如,$命令是移动光标到本行末尾,那么d$就表示删除到本行末尾;再比如,4}表示向下移动4个由空行隔开的段落,那么d4}就是删除这4个段落。
移动光标
h
左移j
移到下一行k
移到上一行l
右移gg
移动到文章的开头G
移动到当前文章的最后。$
$光标移动当前行尾0
数字0光标移动当前行首e
向右移动一个单词w
向右移动一个单词,与e的区别是w是把光标放到下一个单词的开头,而e是把光标放到这一个单词的结尾。b
移动到单词开始位置:59
移动到59行#l
移动光标到该行第#个字的位置,如5l
ctrl+g
列出当前光标所在行的行号等信息: #
如输入: 15会跳到文章的第15行ctrl+b
:向上滚动一屏ctrl+f
:向下滚动一屏ctrl+u
:向上滚动半屏ctrl+d
:向下滚动半屏
删除文字
x
删除光标所在位置的一个字符#x
删除光标所在位置后的#个字符,如6x
就是删除后面的6个字符。X
大写的X为删除光标所在位置前的一个字符#X
删除光标所在位置前的#个字符dd
删除当前行,并把删除的行存到剪贴板中#dd
从光标所在行开始删除#行。如5dd
就是删除5行v/ctrl+v
: 使用h、j、k、l移动选择内容,然后按d删除。其中v是非列模式,ctrl+v是列模式
复制粘贴
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
撤销
u
撤销、回退ctrl + r
恢复刚才的撤销操作
搜索
/关键字
先按/
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往后寻找到您要的关键字为止。?关键字
同上,只不过?
是往上查找
缩进缩出
>>
当前行缩进#>>
当前光标下n行缩进<<
当前行缩出#<<
当前光标下n行缩出: set nu
会在文件每一行前面显示行号:wq
保存并退出:w
保存:q!
退出不保存:saveas <pat>
另存为:e filename
打开文件- `:sav filename 保存为某文件名
- ZZ: 命令模式使用大写ZZ直接保存并退出
- 邮箱 :[email protected]
- Good Luck!