我习惯了windows上的快捷键,在vim模式下喜欢按ctrl+s,然后整个界面就不动了,按一下ctrl+q 就可以恢复。
vim 分三种模式
一般模式、编辑模式、命令行模式
一般模式
一般模式是默认模式,在这个模式下可以上下移动光标,删除字符或整行,可以复制、粘贴文件数据。
编辑模式
在一般模式下可以,按 a ,A,i,I,o,O,r,R
中一个进入编辑模式,按Esc
退出编辑模式
命令行模式
在一般模式下输入: / ?
三个中任何一个,就可以把光标移动到最下面一行,可以查找数据,读取,保存,替换字符,离开vim 。
一般模式可以和编辑模式,命令模式相互切换,但是编辑模式不能和命令模式相互切换
快捷键
移动光标
h
或者左箭头 向左移动光标
j
或者下箭头 向下移动光标
k
或者上箭头 向上移动光标
l
或者右箭头 向右移动光标
30j
向下移动三十行
ctrl+f
屏幕向下移动一页,相当于 PagDown [常用]
ctrl+b
屏幕向上移动一页,相当于 PagUp [常用]
ctrl+d
屏幕向下移动半页
ctrl+u
屏幕向上移动半页
+
光标移动到非空格符的下一行
-
光标移动到非空格符的上一行
n<space>
那个n 表示数字 按下数字以后按光标会发现光标向右移动了这一行的n个字符
0 或者 功能键Home
移动到这一行的最前面 【常用】
$ 或者 功能键End
移动到这一行的最后面【常用】
H
光标移动到这个屏幕的最上方那一行的第一个字符
M
光标移动到这个屏幕的中间那一行的第一个字符
L
光标移动到这个屏幕的最下方那一行的第一个字符
G
光标移动到这个文件的最后一行【常用】
nG
移动到文件的第多少行【常用】
gg
移动到这个文件的第一行【常用】
n[enter]
光标向下移动n行
替换或者查找
/word
向下查找一个名称为word的字符串。
?word
向上查找一个名称为word的字符串。
n
代表重复前一个查找的操作,会向下继续查找刚才查找的字符串
N
代表重复前一个查找的操作,会向上继续查找刚才查找的字符串
使用/word
和 n
或者 N
可以方便的查找到文件中你想要查找的关键词
n1,n2s/word1/word2/g
n1,n2是数字,在n1,n2行之间寻找word1,并且替换成word2
1,$s/word1/word2/g
从第一行到最后一行查找word1,替换成word2.
1,$s/word1/word2/gc
从第一行到最后一行进行替换,但是在每一次替换之前都询问是否需要替换
删除,粘贴,复制
x,X
在一行字当中x想后删除一个字符,相当于delete键
X表示向前删除一个字符相当于Backspace
nx
n 为数字,连续向后删除n个字符。
dd
删除光标所在的一整行
ndd
n为数字,删除光标所在的向下n行。
d1G
删除光标所在到第一行的所有数据
dG
删除光标所在到最后一行的所有数据
d$
删除光标所在到这一行的最后一个字符
d0
删除光标所在到该行的第一个字符
yy
复制光标所在的一整行
nyy
复制光标所在向下n行
y1G
复制光标所在到第一行的所有数据
yG
复制光标所在到最后一行的所有数据
y$
复制光标所在行到该行行尾的所有数据
y0
复制光标所在行到该行行首的所有数据
p,P
p 将已经复制的数据在光标下一行粘贴,P 则为粘贴在光标的上一行
J
将光标所在行与下一行的数据结合在同一行
c
复制删除多个数据,例如 向下删除10行 10cj
u
复原前一个操作
Ctrl+r
重做上一个操作
.
小数点 重复前一个草最
一般模式切换到编辑模式可用按钮的说明
i I
i 从当前光标出进入,I 从当前行的第一个非空字符处开始插入
a A
a 从光标的下一个字符处开始插入,A从光标所在行的最后一个字符处开始插入
o O
o 在光标所在行的下一行处开始插入, O 在光标所在处的上一个插入新的一行
r R
r 只会替换光标所在的那一行字符一次,R 会一直替换光标所在的文字,直到按下esc 为止
一般模式到命令模式可用的按钮说明
:w
将编码的数据写入硬盘文件
:w!
强行写入文件 能不能写取决权限的大小
:q
离开vim
:q!
修改了文件 不想保存可以使用 强制退出不保存
:wq
保存后离开 !wq
强制保存后离开
ZZ
大写的ZZ 若文件没有改动,不保存离开,文件改动,保存后离开
:[filename]
将编辑的文件保存在另一个文件中(相当于另存为)
:r[filename]
在编辑的数据重打开另一个文件的数据
:n1,n2 w [filename]
将n1,n2之间的内容保存在 这个文件中
!command
暂时离开vi到命令模式下执行command的显示结果
例如:! ls/home
在vi当中查询home下面ls输出的文件信息
set nu
显示行号,设置之后会在每一行前面显示改行的行号
set nonu
取消行号