linux的IDE:
KDvelop:KDE平台
Anjuta:GNOME平台
eclipse:java平台
编辑器:
vim:unix系统中的编辑器(vim是vi的增强版)
emacs:在xwindows中使用(etags)
kwrite:KDE
kate:KDE
gedit:Gnome
vim+ctags+cscope打造IDE
安装:
sudoapt-get install vim vim-scripts vim-doc ctags
vim-addons status #查看vim插件
vim-addons install $name #安装vim的插件
sudoapt-get install cscope
###########################################################
vim的使用
vi 进入vi的正常模式
i 正常模式切换到插入模式
: 正常模式切换到命令模式
esc 任意模式切换到正常模式
vimtutor:vi的帮助文档
-------------------------------
命令模式:
---
:q不保存退出
:q! 不保存强制退出
:w 保存
:n1,n2w 保存n1至n2行
:wq 先保存后退出
:x 先保存后退出
:r 提取文件
:setnu 设置行号
:
:! 进入外部指令模式
:s/wrong /right 将第一个wrong修改为right
:s/wrong /right g 将一行中的wrong修改为right
:n1,n2s/wrong/right/g 将n1到n2之间的wrong修改为right
:%s/wrong/rigt/g 将整个文件中的wrong修改为right
:%s/wrong/rigt/gc 将整个文件中的wrong修改为right,会弹出提示
:1,$d 清空全部内容
:g/pattern/d 删除包含pattern的行
:m,ng/pattern/d 删除m到n行中包含pattern的行
:v/pattern/d 删除不包含pattern的行
-------------------------------------
正常模式
------
D:删除
Dw(ndw、dnw):删除一个单元+空格
De(nde、dne):删除一个单元
D$(nd$、dn$):删除到该行末尾
Dd(ndd、dnd):删除一整行
-------
C:修改
Cw(ncw、cnw):修改一个单词
Ce(nce、cne):修改一个单元
C$(nc$、cn$):修改到该行末尾
--------
U:撤销对整行的修改
u: 撤销上一次对该行的修改
ctrl+ R 取消上一次的撤销
--------
Yy(nyy):复制一行
----------
P(np):粘贴
----------
r: 替换一个字符
R: 批量替换
----------
Ctrl+ g: 查看当前行信息
行号 shift+ g :跳至指定行
Shift+ g: 跳至最后一行的开头
Shift+$:跳到当前行的行尾
----------
查找:
/ 从上往下查找
n 再往下找
shift+ N 往相反方向查找
? 从下往上查找
----------
o: 在下面新开一行,进入插入模式
O:在上面新打开一行,进入插入模式
---------
a: 在光标之后插入
A: 在该行末尾插入
快捷键:
% 跳转到配对的括号去
[[ 跳转到当前或者上一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)
][ 跳转到当前代码块(函数定义、类定义等)的结尾去(但要求代码块中'{'必须单独占一行)
]] 跳转到下一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)
[/ 跳到注释开头(只对/**/注释有效)
]/ 跳到注释结尾(只对/**/注释有效)
gD 跳转到当前文件内标识符首次出现的位置,可用于跳转到全部变量的定义处;查找局部变量时,要是多个函数中定义了该局部变量,使用gD进行查找,找到的变量定义可能不是你需要的
gd 跳转到当前函数内标识符首次出现的位置,可用于跳转到局部变量的定义处
'' 跳转到光标上次停靠的地方,是两个',而不是一个"
mx 设置书签,x只能是a-z的26个字母
`x 跳转到书签处("`"是1左边的键)
> 增加缩进,"x>"表示增加以下x行的缩进
< 减少缩进,"x<"表示减少以下x行的缩进
###########################################################
Ctags命令的使用
---------------------------------------------
ctags --list-languages #查看ctags支持的编程语言
ctags --list-maps #查看编程语言对应的扩展名
ctags -langmap=c:+.yoursuffix -R #为自己的扩展名指定解析器
ctags --list-kinds #查看所有编程语言的语法元素
ctags --list-kinds=c #查看c语言的语法元素
ctags -R * #为当前目录下的和子目录中的文件创建tags
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . #使用智能补全插件
vi -t $name #直接定位到函数或变量
在.vimrc设置tags的路径
set tags=./tags,./TAGS,../tags,../TAGS,../../tags,../../TAGS
----------------------------------------------
在vi中使用ctags
:split #水平分隔窗口
:vsplit #垂直分隔窗口
:tag $name #在vi中可以直接跳转到函数或变量的定义
ctrl+ ] #取当前单词为function,同上,往前跳转
:stag $name #新的水平分割窗口显示函数或变量的定义
ctrl+ w + ] #同上
:ptag $name #预览窗口显示函数或变量定义
ctrl+ w + } #同上
:pclose #关闭预览窗口
:pedit $file #在预览窗口编辑文件
:psearch $var #查找这个变量并在预览窗口显示
ctrl+ o #回到原来的地方
ctrl+ T #跳到上一次的tag处,往回跳转
:tags #查看跳转的历史记录
:tselect $name = :ts #同名函数可以列出列表来选择
:tfirst = :tf #同名函数跳转到第一个匹配项
:$count tprevious = :tp #跳转到count前一个
:$count tnext = :tn #跳转到count的下一个
:tlast = :tl #跳转到最后的匹配
###########################################################
cscope的使用
setcscopequickfix=s-,c-,d-,i-,t-,e- # ~/.vimrc 让vim支持cscope
cd project_dir/
cscope -Rbq #
然后会生成3个文件:cscope.in.out,cscope.out,cscope.po.out
vi dir/XXX.c
:cs add $dir/cscope.out $dir #增加cscope连接
或添加到.vimrc中:
iffileradable("cscope.out")
csadd csope.out
elseif$CSCOPE_DB != ""
csadd $CSCOPE_DB
endif
:cs find type name #find命令语法格式
type:
0或s:查找该C语言符号
1或g:查找定义
2或d:查找本函数调用的函数
3或c:查找调用指定函数的函数
4或t:查找字符串
6或e:查找egrep模式
7或f:查找文件
8或i:查找包含指定文件的文件
:cw #打开新窗口
:cs help #查看帮助
:cs kill #杀掉一个cscope连接
:cs reset #初始化所有cscope连接
:cs show #显示cscope连接
添加到~/.vimrc中可以让cs支持快捷键:
nmap<C-_>s:cs find s<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>g :cs find g<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>c :cs find c<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>t :cs find t<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>e :cs find e<C-R>=expand("<cword>")<CR><CR>
nmap<C-_>f :cs find f<C-R>=expand("<cfile>")<CR><CR>
nmap<C-_>i :cs find i^<C-R>=expand("<cfile>")<CR>$<CR>
nmap<C-_>d :cs find d<C-R>=expand("<cword>")<CR><CR>