Vim 常用操作
教程:
打开terminal,输入 vimtutor 按 enter
学习方式:
了解 Vim 的几种模式
insert模式- 普通模式(normal)模式
- 冒号模式(命令模式)
- V 模式:编辑选区模式
进入和退出 Vim
- 进入
vimvi或者vi fileName
- 退出
vim- 按下
esc进入正常模式,然后按下:+q!+enter表示强制退出 - 按下
esc进入正常模式,然后按下:+wq+enter表示保存后退出
- 按下
移动光标
- 上 :
k表示上移,nk表示上移 n 行 - 下 :
j表示下移,nj表示下移 n 行 - 左 :
h表示左移,nh表示左移 n 列 - 右 :
l表示右移,nl表示右移 n 列
剪切/复制/删除/退出/等常用操作
记住以下单词:
quit 放弃
按
:q!表示强制退出write / road 读 /写
按
write保存文件yank 复制
按下
y表示复制在配置
.vimrc以后按下
空格 + y表示复制到系统剪贴板paste 粘贴
首先到达你要复制的开头
按
v进入选区模式,移动光标到你要复制的结尾按
y复制在配置
.vimrc以后按下
空格 + p表示从系统剪贴板粘贴到 vim 中到达你要粘贴的位置,按
p在该光标前面开始粘贴,或按P在该光标后面的结尾开始粘贴
delete 删除
- 按
x删除光标后一个字母 - 按
dd表示删除一行 - 按
nd表示删除 n 行 - 按
dw表示删除光标后面的一个单词(delete word) - 按
dnw表示删除光标后的 n 个单词 - 按
db表示删除光标前面的一个单词(delete backword) - 复杂用法:
eg:This is (a vim study test)删除括号里面的内容怎么快速删掉?按
di(表示delete in ()eg:This is (a vim study test)删除括号以及里面的内容怎么快速删掉?按
da(表示delete at ()同理,其他的复杂操作也是这个原理
eg1:
function (){ console.log(0) }删除花括号里面的内容:
di{eg2:
<div>hello,world! </div>删除标签里面的内容
dit表示delete in tag标签里面的东西- 按
change 改变
cw表示change word,修改光标后面的一个单词cw表示change backword,修改光标前的一个单词change的复杂操作
和
delete的操作一样,也支持复杂用法,比如你要修改一个标签的内容,正常的用法是要先删除然后在写入,使用cahnge的高级操作则不需要如此麻烦eg:<div>abc</div>修改div里面的内容为def按
cit表示change in tag,此时已经删除了标签里面东内容同事进入了编辑模式line 行
find 查找
word (一个)单词
forward / backword 前面 / 后面
up / down 向上 向下
翻页:因为快捷键
d被前面删除所占用了,因此需要添加ctr + d上一页(上翻):
ctr + u下一页(下翻):
ctr + dinsert / append (在前面)插入 / (在后面)插入
按
i(在光标前面)插入 ; 按I在整行前面(行首)插入按
a(在光标后)插入 ;按A在整行后面(行尾)插入do / undo 撤销
按
u撤销 ,按ctr + u把撤销的又重做一遍(回到撤销前的状态)u撤销一次nu撤销 n 次
高级操作
- 配置
.vimrc
curl https://gist.githubusercontent.com/FrankFang/a6dc0886d6895c088225d7c61b954e69/raw/4855205d90fe739067a7ee4016f010ac1009d944/simple-vimrc > ~/.vimrc
在.vimrc 中,复制粘贴有个需要注意到的地方,当在 vim 中复制一个内容,只能在 vim 中使用粘贴,而不能在其他地方使用;同理,在其他地方复制一个内容,也不能在 vim 中粘贴
因为使用 y 仅仅是复制内容在 vim 剪贴板中,而不是系统剪贴板中
同理,使用 p 仅仅是粘贴 vim 剪贴板中所有的内容,而不是系统剪贴板的内容
那么怎么复制和站忒系统剪贴板的内容在 vim 中呢?
在 .vimrc 中配置好了,使用 空格 + y 表示复制 vim 中的内容到系统剪贴板中,其他地方可以直接粘贴;
使用 空格 + p 表示粘贴在其他地方的内容到 vim 中
- 配置插件
在 .vimrc 中找个空白的地方,输入两行:
第一行: call plug#begin('~/.vim/plugged')
第二行: call plug#end()
即,需要安装的插件按照格式填写在里面即可
