Vim Days
本来这个博客叫vim everyday的,但是我发现一个问题: 每天都坚持,是一件十分困难的事.同时,中间间隔了一些时间也没关系,所以改名叫vim days.可以看做是一些vim的小练习.
- 首先,这里不会介绍插件.因为不是所有环境都有插件.
- 其次,如果想一起学,除了day0以外,每天(不用严格的每天)大概就花10分钟左右,因为学习vim是个过程,慢慢学就会了,所以每天的内容不多,但是没事休闲的时候要记得玩玩.
- 然后,开始的时候不要在工作中使用vim.
- 再然后,把键盘的大写锁定映射为Esc键.
- 最后,总有一天你会发现,vim会极大的提升你的效率.
day0 基础
如果之前没有使用过vim,下面有一些很好的交互式的网站,拿出一个晚上把这些联系都敲一遍,基本上能够入门(或者你也可以看文档).
-
Learn vim in a week我就是看这个视频找到了学习方法
-
OpenVim交互式的vim学习网址,能够学到最基础的vim操作
-
Vim Adventuresvim小游戏
-
vim genius交互式的vim教程
day1 用visual模式练习移动
有时候,visual模式可以用来帮助我们很快的查看选择的范围.举个例子,比如我们要复制一个方法体:
function specialAdd(a, b) {
if (!a || !b) {
return 0;
}
return a + b;
}
如果光标在 function 上,然后输入 v/} ,就会把整个if语句选中.然后按 n 会选中整个方法.
接下来可以试试 } 移动(选中整个段).如果输入 v} 就会选中整个方法.因为是在视觉模式下,查看移动就很容易.然后我们就可以结合 y 利用 y} 来复制(yank) 整个方法.
但是如果方法里面有空行,这个就不靠谱了
function specialAdd(a, b) {
if (!a || !b) {
return 0;
}
return a + b;
}
在这里,整个方法就不是”paragraph”.所以 y} 就用不了,但是我们可以用’sections’使用 v][ 来选择整个方法,用 y][ 就可以复制这个方法.
使用 vaB 可以选择整个方法的body或者是整个if语句,具体看光标在哪.
使用 v% 也能选中整个方法提,因为 % 会选择到下一个括号的位置.所以使用 y% 就会赋值到下一个括号的内容.
现在你就学会了怎么用visual模式来查看选择区域的方法啦.
day2 粘贴内容到命令行下
在使用vim的时候,使用后会使用 : 来输入一些命令,如果希望在输入命令的时候也能够粘贴,就需要用到 寄存器
CTRL-R 指令会把寄存器中的内容粘贴懂啊当前输入的空间中. :help ins-special-keys 可以查看它的用法细节.
假设现在我们要搜索一个词.
- 首先,使用
"ayw来复制这个词,然后按esc. - 然后输入
/来搜索. - 然后按 CTRL-R 和
a来放只寄存器a中的内容
还有一种更快捷的方式,直接用 yw 来把内容复制到默认寄存器中,然后按 CTRL-R_" 来输入默认寄存器的内容.
寄存器还是个很爽的功能的,值得一试.
day3 搜索作为动作
vim里面有一种的玩法–动作+操作,例如复制一个词, yaw(yank a word) ,删除一个句子, das(delete a sentence) , yap (复制一段)
这里的 ‘aw’ ‘as’ ‘ap’ 被成为motion,除了这些常见的motion以外, 搜索也能作为motion.
距离而言,使用d/,<CR>(CR表示回车) 可以删除到逗号. 更加快捷的方式是使用dt,.
day4 使用.
.这个目录会重复上次的修改,可以使用(:h .)来查看具体的用法,下面有几个例子来说明.的强大
line one
line two
line three
line four
一开始光标位于第二行,使用 >G可以让二到四行都向右缩进,然后按j可以换到下一行,输入 .可以继续缩进三到四行
.的作用就是用来重复更改的操作.这里的>G就是一个操作,除此之外,从进入插入模式开始,所有的改变,也都会记录为一个操作.
例如,按i进入插入模式 输入”abc”.然后回到普通模式ESC,然后按..就会重复的输入abc
day5 操作符 + 动作命令
vim 的强大很大程度上取决于操作符和动作结合的方式,例如d{motion}命令可以对一个字符dl,一个完整的单词dw,或者一个段落来进行操作dp.使用:h operator
下面列出了vim中的左右操作
c c change
d d delete
y y yank into register (does not change the text)
~ ~ swap case (only if 'tildeop' is set)
g~ g~ swap case
gu gu make lowercase
gU gU make uppercase
! ! filter through an external program
= = filter through 'equalprg' or C-indenting if empty
gq gq text formatting
g? g? ROT13 encoding
> > shift right
< < shift left
zf zf define a fold
g@ g@ call function set with the 'operatorfunc' option
定义自己的动作
在vim中还可以定义自己的工作,可以通过h :map-operator来定制自己的动作
commentary这个插件定义了所有的注释和取消注释的命令,使用\\就能够触发,例如使用\\ap可以注释一段,使用\\\\可以注释当前行
day6 在插入模式中的小技巧
在正常模式中有很多快捷的操作,插入模式也有一些快捷键:
删除
比较好用的一点在于 下面这几个命令,在shell中也可以使用,十分方便
<C-h> 用于删除一个字符
<C-w> 用于删除一个单词
<C-u> 删除至行首
快速模式切换
<Esc> 切换到普通模式
<C-[> 切换到普通模式
<C-o> 切换到插入-普通模式
使用<C-o>可以进入普通模式,然后在进行一次操作后自动进入插入模式,这个命令有时候很实用
例如,我们可以使用<C-o>zz来把当前输入的区域居中,然后自动进入插入模式.
day7 一个关于vim超棒的教程
在控制台输入vimtutor就能打开一个官方的超棒的vim教程,由于很长时间的使用,对于某些vim已经比较熟悉
通过vimtutor重新回顾一下,这个vimtutor是vim入门手册,是一个非常好的入门资料