站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Emacs/在Emacs下用C、C++编程
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
==基本环境设置== ===编辑环境配置=== 要写C++程序,当然要用到cc-mode[[插件]]。CC-Mode原本是支持C语言的,但现在也能支持很多语言,比如 C++,[[Java]],[[Objective-C]],[[CORBA]],[[AWK]],[[Pike]]等等。CC-Mode是gnu-emacs的标准插件。如果您要求不高,那么默认的配置或许就能满足。CC-Mode的各种行为都可以自由地定制. 这里本例的.emacs文件中关于CC-Mode配置的部分,仅供参考: ;;;; CC-mode配置 http://cc-mode.sourceforge.net/ (require 'cc-mode) (c-set-offset 'inline-open 0) (c-set-offset 'friend '-) (c-set-offset 'substatement-open 0) <pre>;;;;本例的C/C++语言编辑策略 (defun my-c-mode-common-hook() (setq tab-width 4 indent-tabs-mode nil) ;;; hungry-delete and auto-newline (c-toggle-auto-hungry-state 1) ;;按键定义 (define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding) (define-key c-mode-base-map [(return)] 'newline-and-indent) (define-key c-mode-base-map [(f7)] 'compile) (define-key c-mode-base-map [(meta \`)] 'c-indent-command) ;; (define-key c-mode-base-map [(tab)] 'hippie-expand) (define-key c-mode-base-map [(tab)] 'my-indent-or-complete) (define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)</pre> 注意一下,上面最后两行是代码自动补齐的快捷键。 <pre>;;预处理设置 (setq c-macro-shrink-window-flag t) (setq c-macro-preprocessor "cpp") (setq c-macro-cppflags " ") (setq c-macro-prompt-flag t) (setq hs-minor-mode t) (setq abbrev-mode t) ) (add-hook 'c-mode-common-hook 'my-c-mode-common-hook) ;;;;我的C++语言编辑策略 (defun my-c++-mode-hook() (setq tab-width 4 indent-tabs-mode nil) (c-set-style "stroustrup") ;; (define-key c++-mode-map [f3] 'replace-regexp) )</pre> ===自动补齐=== 自动补齐通常用的都是hippie-expand。不过有时候会觉得这个自动补齐“傻”了一点,常会补齐出一些毫不相干的东西,因为hippie-expand是根据你敲过的词和kill-ring等进行判断的,并不对程序语法进行分析。 所以你还需要安装一个代码分析工具,然后把它加进hippie-expand的扩展策略里去。我们可以用semantic。 Semantic是CEDET 中的一个工具,CEDET是Collection of Emacs Development Environment Tools的缩写,它包含了好几个工具,都挺不错的。 您可以在.emacs中对Semantic进行配置,下面是本例的.emacs相关的配置,仅供参考: 导入cedet: (load-file "~/lib/emacs-lisp/cedet-1.0pre3/common/cedet.el") 配置Semantic的检索范围: (setq semanticdb-project-roots (list (expand-file-name "/"))) 自定义自动补齐命令,如果在单词中间就补齐,否则就是tab。 <pre>(defun my-indent-or-complete () (interactive) (if (looking-at "\\>") (hippie-expand nil) (indent-for-tab-command)) ) (global-set-key [(control tab)] 'my-indent-or-complete)</pre> hippie的自动补齐策略,优先调用了senator的分析结果: <pre>(autoload 'senator-try-expand-semantic "senator") (setq hippie-expand-try-functions-list '( senator-try-expand-semantic try-expand-dabbrev try-expand-dabbrev-visible try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-expand-list try-expand-list-all-buffers try-expand-line try-expand-line-all-buffers try-complete-file-name-partially try-complete-file-name try-expand-whole-kill ) )</pre> 注意一下前面CC-Mode配置中有这么两行: (define-key c-mode-base-map [(tab)] 'my-indent-or-complete) define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu) 这样,我们在CC-Mode中就可以调用自定义的hippie补全了,快捷键是Tab。 另外还把快捷键“Alt + / ”绑定到了semantic-ia-complete-symbol-menu命令上,这是semantic的命令,它会根据分析结果弹出补齐的菜单,效果如下图显示: [[Image:Thumbs_semantic-ia.jpg]] CEDET中还有一个不错的工具是speedbar,你可以用它在多个文件中快速切换。在本例的.emacs配置文件里,把speedbar关联到了F5上: (global-set-key [(f5)] 'speedbar) 这样用F5就可以调出speedbar,效果如下: [[Image:Thumbs speedbar.jpg]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)