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 编程环境》