背景
之前一直的工作流鼠标键盘,以为开发就是敲敲点点。16年9月入坑vim
以来,我自己感觉开发效率50%
的提升,前期开发模式换为vim
需要适应几个月吧,恶心恶心就过去了。vim
学习曲线了解一下,所有的付出都是值得的。Edit text at the speed of thought
:
vim环境基本配置
两种选择,推荐1
1.好用基础版。repo github star
数14k+
,Basic Verison推荐,Vimrc Github
安装步骤:
git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_basic_vimrc.sh
2.自己写个简单的。需要自定义配置在$HOME
下新建.vimrc
,配置完成后执行source .vimrc
# 开启行号
set number
# 注释颜色改为好辨
colors desert
# reindent操作(>>\<<)缩进4个空格
set shiftwidth=4
# 敲入tab键时实际占有的列数
set softtabstop=4
# 输入tab时自动将其转化为空格
set expandtab
## 自动缩进模式
set smartindent
常用命令
以下命令虽然多,大部分都是常用的,多练练形成肌肉记忆就好了
查找
命令模式下,输入/word
后回车,即查找word,按n
查找下一个匹配单词,按N
查找上一个匹配单词
跳转
-
w
下个单词的首部(向后) -
e
当前光标最近处的单词的尾部(向后) -
b
当前光标最近处的单词的首部(向前) -
^
跳转到行的开始 - $ 跳转到行的结束
删除单词
-
daw
删除光标所在单词(delete a word) -
viwc
可视模式中删除当前单词并插入 -
bdw
删除到下一个单词开头,比如中间有空格啊就删掉了 -
D
当前光标删到行尾 -
d^
当前光标删到行首
删除字符
-
x
,删除光标所在字符 -
X
,删除光标所在前字符
删除行
-
dd
删除本行 -
:1,$d
,删除所有行
插入
-
i
:在当前字符的左边插入 -
I
:在当前行首插入 -
a
:在当前字符的右边插入 -
A
:在当前行尾插入 -
o
:在当前行下面插入一个新行 -
O
:在当前行上面插入一个新行 -
gg
:跳至文件开始 -
G
:跳至文件结束
复制粘贴,普通模式
-
yy
复制本行 -
p
粘贴 - 复制光标所在当前单词 yaw
- 剪切小括号内的
dib
,包括小括号dab
替换,命令模式
- 替换所有匹配为另一个
:%s/"//g
(匹配到所有"并置为空)
有用(待整理归并)
command | mens |
---|---|
ctrl + d ctrl + u |
向上 向下滚屏 |
ZZ |
保存并退出 |
:e! |
不保存文件并重载 |
* |
向下查找当前光标所在单词 |
:set hlsearch |
高亮查找内容 |
:noh |
取消高亮 |
:noh |
turn off the highlight until the next search |
viw |
选中当前单词 |
p |
paste |
ciw |
change inner word |
cw |
change the word from the current cursor position |
:set so=999 |
随时使光标位于屏幕中央 |
:set so=0 |
恢复光标位置普通模式 |
ggVGu |
格式化文件大小写 |
u |
撤销 |
ctrl+r |
撤回撤销 |
vim -r *.swp |
对于操作文件时异常退出产生的.swp 或.swo 文件处理 |
ctrl+s |
锁屏 |
ctrl+q |
解锁 |
ggVG |
全选 |
:w !sudo tee % > /dev/null |
编辑完文件准备保存缺发现未有权限保存 |
c |
修改 |
d |
删除 |
y |
复制 |
g~ |
反转大小写 |
gu |
转换为小写 |
gU |
转换为答谢 |
> |
增加缩进 |
< |
减少缩进 |
= |
自动缩进 |
! |
|
ga |
查看当前字符的unicode编码w |
搜索
命令 | 用途 |
---|---|
f{char} |
正向移动到下一个{char} |
F{char} |
返向移动到上一个{char} |
t{char} |
正向移动到下一个{char}所在之处的前一个字符 |
T{char} |
返向移动到下一个{char}所在之处的后一个字符 |
; |
重复上次的字符查找命令 |
, |
反转方向查找上次的字符查找命令 |
替换模式
r
是我较常用的命令之一,如91
需要更改为98
,则光标移动到1
上,分别按r8
即可,替换完会立刻回到普通模式,相当于常用的xi{char}<ESC>
可视模式
命令 | 用途 |
---|---|
v |
面向字符的可视模式 |
V |
面向行的可视模式 |
<C - v> |
面向列块的可视模式 |
注释符"
" some need be comment
块选择
`$` to jump to the end of the line you're on (to be over the opening brace)
`v` to begin a selection (V for whole lines)
`%` to jump to the matching brace.
`j` to go down one line so your cursor is inside the braces you are trying to select
`v` to begin a selection (V for whole lines)
`i{` select everything inside the braces
so `di}`,`ci}`,`vi}` is best practice
文档
1.管道符,重定向(TODO)
# url
https://zh.wikipedia.org/wiki/重定向_(计算机)
2.常见操作符
http://vimdoc.sourceforge.net/htmldoc/motion.html#operator
以上文档不定时更新优化。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。