转载地址:http://blog.youkuaiyun.com/blogercn/article/details/7487826
android的代码包括JAVA,C,C++和各种脚本,算起来有十几万个文件,阅读,编辑,使用这些代码,需要寻找一款合适的软件才能事倍功半。运行在WINE模式下的source insight工具不仅反应很慢,而且有很多符号在阅读时根本就不会跳转,令人非常困惑。因此我们大部分人只能入乡随俗,要么使用eclipse,要么使用VIM或者EMACS.VIM和EMACS作为linux下的两大编辑神器,对于从WIN转过来的朋友来说,还是比较富有挑战性的,关健在于习惯。他们都能通过命令行和快捷键完成所有工作,而且可以通过插件无限扩展,两者的区别在于,一个更接近DOS,所有操作快捷却对鼠标支持不是很好。一个和WIN比较接近,对鼠标支持比较好。但听说这两大阵营斗的正醋,宛如当年基督教与新教的斗争。也许需要两个都试试才能决定自己加入哪个阵营。在android的develop目录的IDE目录下,可以找到android对一些流行编辑器提供的配置文件。
作为一个典型的WIN用户,其实我们是无法理解这两大神器的。从WIN角度来说,一个好的软件应该需要达到不使用说明书就能操作的地步。但我们的linux同行显然不这么认为,感觉似乎速度,效率,命令的支持才是一个软件的魅力的源泉。所以我们只能入乡随俗,学习一个软件,先读他的说明书,背会他的快捷键和命令行。
确切的说,VIM有三种状态,快捷键状态,命令行状态,编辑状态。通过快捷键ESC切换。但大部分书都会把命令行和快捷键归入一种状态,所以常常说是两种状态,这也不错,快捷键和命令有时确实不太容易分清,一般来说,快捷键不需要回车确认,就会自动执行。
VIM的学习应该分几步,第一步是命令,快捷操作掌握。第二步是使用各种插什,第三步是编写自己工作需要的环境脚本文件.vimrc
下面列出我刚开始学习时总结的快捷键:
- 跳转,区分大小写,加shift的是大写:
- 1,上下左右箭头 hkjl上下左右移一个字符
- 退格,左移一字符
- 空格,右移一个字符
- 2.Ctrl-f往下滚动一屏
- Ctrl-b往上滚动一屏
- 3.Ctrl-U往上滚动半屏
- Ctrl-D往下滚动半屏
- 4.Shift+h顶部第一行字符起始,也即大写H
- Shift+m中间
- shift+l底部最后一行起始
- 5.^,0当前行起始
- $,当前行尾
- 6.~光标上一行首
- Enter下一行首
- 7.[n]G。指定行,500G,到500行
- gg 跳到文章开头
- shift+g 跳到文章末尾
- 8.Ctrl-E内容整体上移一行
- Ctrl-Y内容整体下移一行
- 9.(){} 完整句子句首,完整句子句尾,完整段落首位置,完整段落尾位置
- 插入,记下a,i,使用跳转也行:
- a,光标之后插数据
- A,光标行尾插数据(即shift+a)
- i,光标之前插数据
- I, 光标行首插数据(即shift+I)
- o.所在行之后
- O,所在行之前(即shift+o)
- 修改替换,记了C或者R,其他也能使用跳转
- shift+c 替换从光标开始的字符
- cw 替换单字
- [n]cc 替换行,n行,n>=1
- [n]s
- shift+s
- r替换一个
- R替换多个
- ~转换大小写
- 撤消
- u撤消先前执行的
- U撤消全部
- 删除,记个x,不停的按就行了
- [n]x删除当前单个字符
- [n]X删除前一个字符
- dw
- [n]dd 删除N行
- D删除行尾
- 复制删除粘贴
- yy,Y复制
- p光标行下
- shift+P光标行上面
- EX命令,上面的大都是快捷键,下面的大都是命令。
- 多行复制:
- :line#1, line#2 co line#3 从某行#1开始到某行#2结束内容复制到某行#3之后
- .当前行,$文件结尾
- 移动:
- :line#1, line#2 m line#3 从某行#1开始到某行#2结束内容复制到某行#3之后
- 删除:
- :line#1, line#2 d
- 查找:
- :str 正向查找
- :?str 反向查找
- n 或者 /从当前位置开始检索下一个,相当于F3
- shift+n 或者 ?从当前位置开始反向检索下一个,相当于shift+F3
- :/pat/+n 光标移到pat所在行之后第n行
- :/pat?+n 光标移到pat所在行之前第n行
- 模式检索:
- :/^search 只检索行首位置
- :/serch$ 只检索行尾
- :/\<search\>
- 支持通配符.*,[a-z],[dm]
- 替换字符串:
- :[g]/search-staring/s//replace-string/[g][c]
- 如:g/BankA/s//BankB/g
- 如果需要手动确认,加个C:
- g/BankA/s//BankB/gc
- 编辑多个文件:
- vim file1 file2
- 合并文件:
- :line# r filename 把读取的文件插入当前光标位置
- 删除特殊字符:
- 1,$ s/^M//
- VIM里运行shell命令:
- :!command
- !!command
- :sh
- 如:!adb devices
- !!adb devices
- 保存文件退出
- :w 写入不退出
- :w! 强制写入
- :wq 写入退出
- :wq! 写入强制退出
- ZZ 写入退出,使用shift+两次ZZ
- :q 退出
- :q! 强制退出
这个掌握之后,需要研究一下插件和vimrc文件编写,这些可以参考《手把手教你把 Vim 改装成一个 IDE 编程环境》