vim基础
vim的官方网站:https://www.vim.org
附练习文档:vim教程和练习文档.txt
移动光标
h左、j下、k上、l右
插入内容
i 在光标的前边进入插入模式
I 在光标所在行的行首进入插入模式
a 在光标的后边进入插入模式
A 在光标所在行的行尾进入插入模式
o 在光标所在行的下方插入空行并进入插入模式
O 在光标所在行的上方插入空行并进入插入模式
s 删除光标指定的字符并进入插入模式
S 将光标所在行清除并进入插入模式
退出vim
第一种(保存修改并退出),这里教大家两招:
ZZ(两个大写字母Z,也就是Shift+z+z)
:wq(这是一个组合命令,如果是 :w 表示保存,而 :q 表示退出)
第二种(直接退出)则要区分情况:
如果你打开文件只是看看,并不做任何改动,那么直接输入 :q 即可
如果对文件动过手脚,但不希望保存(放弃修改)而直接退出,则需要再后边加上一个感叹号 :q!
删除字符
motion :
0 将光标定位到行首的位置
^ 同上
$ 将光标定位到行尾的位置
b 将光标定位到光标所在单词的起始处
e 将光标定位到光标所在单词的结尾处
w 将光标定位到下一个单词的起始处(注意,是光标所在单词的下一个单词噢^_^)
gg 将光标定位到文件的开头
G 将光标定位到文件的末尾
delete :d+motion
d0 删除光标从当前位置(不包含)到该行行首的所有字符
d^ 同上
d$ 删除从光标当前位置(包含)到该行行尾的所有字符
db 删除从光标当前位置(不包含)到单词起始处的所有字符
de 删除从光标当前位置(包含)到单词结尾处的所有字符
dw 删除从光标当前位置(包含)到下个单词起始处的所有字符
dh 删除光标前面一个字符
dl 删除光标指定的字符
dj 删除光标所在行以及下一行的所有字符
dk 删除光标所在行以及上一行的所有字符
dd 删除光标所在行的所有字符
dgg 删除光标所在行(包含)到文件开头的所有字符
dG 删除光标所在行(包含)到文件末尾的所有字符
数字的奥义
3h - 光标向左移动3格
3j - 光标向下移动3行
3w - 将光标跳到三个单词后的开始位置
......
d3h - 删除光标前的 3 个字符
d3j - 删除光标所在行以及下面 3 行的所有字符
d3w - 向后删除当前光标到后面第三个单词前的所有字符
......
撤销、恢复
1.小写的 u 表示撤销最后一次修改;而大写的 U 表示撤销对整行的修改。
2.Ctrl + r 快捷键可以恢复撤销的内容!
#粘贴命令、替换命令、替换模式和修改命令
1.在 VIM 下使用删除命令,并不会直接将你的东西删掉,而是放到 VIM 的寄存器中。
p:将最后一次删除的内容粘贴到光标之后。(大写的 P 则是粘贴到光标之前)
注意:如果你需要粘贴的是整行为单位,那么 p 命令将在光标的下一行开始粘贴;如果你拷贝的是非整行的局部字符串,那么 p 命令将在光标后开始粘贴。
2.拷贝:
(1)我们用的最多的还是拷贝粘贴,VIM 用 y 命令实现拷贝。语法跟删除的 d 命令一样:y motion
(2)其中的 motion 同样是用来表示操作范围的指令,即 yy 表示拷贝当前行,3yy 则表示拷贝 3 行;y$ 表示从光标所在的位置拷贝到行尾的所有字符;yG 则表示从光标所在行拷贝到文件末尾行的所有字符。
(3)拷贝完成之后同样使用 p 命令进行粘贴
3.替换
大写R - 输入字符可以连续替换光标及其后边的内容
注:退格键(Backspace)可向左恢复原来的内容
4.修改
c :c+[number]+motion - 先删除所选范围的内容再插入
按键 含义
c0 删除光标从当前位置(不包含)到该行行首的所有字符,并进入插入模式
c^ 同上
c$ 删除从光标当前位置(包含)到该行行尾的所有字符,并进入插入模式
cb 删除从光标当前位置(不包含)到单词起始处的所有字符,并进入插入模式
ce 删除从光标当前位置(包含)到单词结尾处的所有字符,并进入插入模式
cw 删除从光标当前位置(包含)到下个单词起始处的所有字符,并进入插入模式
ch 删除光标前边一个字符,并进入插入模式
cl 删除光标指定的字符,并进入插入模式
cj 删除光标所在行以及下一行的所有字符,并在光标下一行进入插入模式
ck 删除光标所在行以及上一行的所有字符,并在光标下一行进入插入模式
cc 删除光标所在行的字符,并进入插入模式
文件信息、跳转、定位括号和缩进
1.文件信息
ctrl + g : 查看文件名,文件状态,文件的总行数,以及光标所在的相对位置。
2.跳转
(1)行号+G
(2):行号
3.定位括号
将光标移动到 (),[],{},中的任何一半括号上,按下 % 键,便可看到此时光标已经跳转到另外一半的括号上了。
4.缩进
(1)普通模式下,shift+>>缩进,shift+<<反缩进
(2)多行缩进:先按v进入可视模式,hjkl选择范围,再缩进。
(3)设置缩进字符::set shiftwidth=10 - 缩进10字符
搜索和替换
1.搜索
普通模式下:
(1)/目标
n - 向后查找 | N - 向前查找
(2)?目标
n - 向前查找 | N - 向后查找
注:搜索. * [ ] ^ % / ? ~ 和 $ 需要加转义符\
2.替换
(1)将光标定位到目标位置,:s/old/new
(2)替换所有字符::%s/old/new/g
(3)替换前询问意见::%s/old/new/gc
y 表示替换
n 表示不替换
a 表示替换所有
q 表示放弃替换
(4)替换第n行到第m行之间的字符::n,ms/old/new/g
执行shell命令、文件另存为、合并文件和打开多个文件
(1)执行shell命令
:!shell命令 - 此后 VIM 将临时跳转回 shell,并执行命令。再次按下 Enter 键回到 VIM。
例::!ls /home
(2)文件另存为
:w newfile - 该命令会以newfile为文件名拷贝保存整个当前文件(旧文件保留不变)
(3)局部内容另存为
先按v进入可视模式,hjkl选中内容后,再输入另存命令
(4)文件合并
:r filename - 将指定文件的内容读取并置入到光标的下一行中。
(5)打开多个文件
vim -o filename1 filename2 ... 垂直并排
vim -O filename1 filename2 ... 水平并排
切换文件:ctrl+w+w 或 ctrl+w+方向(箭头或hjkl)
退出所有文件::qa、qa!、wqa