VIM-学习过程
Contents
在网上看到一位前辈提到vim的学习过程
- 学习什麼是 operator(命令d,y,c 等),什麼是 motion(所有能移动光标的命令,h j k l w e f t / ? 等等), 学习 operator + motion 的方式,如 ct. (将当前光标到 . (点) 之间的内容删除并进入 insert mode 准备修改)
- 学习基础的 Ex 命令,:s 什麼的
- 学习 text-objects,知道 operator + text-objects 的方法,可进行手术般精准的定位和修改,
- 习惯 operator + motion 后,多注意使用可重复的命令组合
- 练习使用书签定位,q 记录宏,使用多个 register,使用 args,使用 buffer 使用其他的 Ex 命令
- 开始 map 经常反覆使用的命令,开始写 vimscript,开始知道自己需要什麼样的插件,比如: pathogen 或 vundle,tagbar, CtrlP, Gundo, UltiSnips,surround,Syntastic,Conque,ack.vim,vim-commentary,fugitive(如果是 git 用户)
举一些在这个情况下有用的例子:
ci” (由 change operator 和 text-object i” 组成)
这个命令会找到当前光标所在行的下一个 " 括起来的字符串,清除引号裏面的内容,并进入 insert mode 以方便修改 用起来比解释起来简单,你可用 const char* hello = “Hello world."; 类似这样的代码来测试
yaB (由 yank operator 和 text-object aB 组成)
这个命令会将当前光标所在的代码块({} 括起来的内容,包括花括号本身)复制到默认 register, 方便在其他地方用 p 贴出来(当然,写代码不鼓励 copy and paste),你可用用任何一个 {} 来测试,然后找另外一个地方 p
gUiw (由 make uppercase operator 和 text-object iw 组成)
这个命令会将当前光标所在的 word 全部变成大写 如将 max_size 变成 MAX_SIZE 这个时候,开始知道为什麼 vim 精确高效,而且并不是因为全键盘无需鼠标
##一些插件
VIM-surround
Normal mode
ds - delete a surrounding cs - change a surrounding ys - add a surrounding yS - add a surrounding and place the surrounded text on a new line + indent it yss - add a surrounding to the whole line ySs - add a surrounding to the whole line, place it on a new line + indent it ySS - same as ySs
Visual mode
s - in visual mode, add a surrounding S - in visual mode, add a surrounding but place text on new line + indent it
Insert mode
VIM-Complete
YCM
Compiling YCM with semantic support for C-family languages:
cd ~/.vim/bundle/YouCompleteMe
./install.sh --clang-completer
Compiling YCM without semantic support for C-family languages:
cd ~/.vim/bundle/YouCompleteMe
./install.sh
MacVim启动出错:
Fatal Python error: PyThreadState_Get: no current thread
Vim: Caught deadly signal ABRT
Vim: Finished.
通过brew unlink python
可以解决。
Author olOwOlo
LastMod 0001-01-01