笔记专用
笔记专用文档
http://pan.baidu.com/s/1csnX4y ltp
另一种安装helm-gtags的方法,以及helm的键位绑定和一些小技巧
1.首先备份自己的~/.emacs.d
2.安装helm-gtags
git clone https://github.com/tuhdo/emacs-c-ide-demo ~/.emacs.d
3.修改~/.emacs.d/init.el添加行号显示和光标所在行有下划线
;;行番号表示 (global-linum-mode t) ;;下划线 (setq hl-line-face 'underline) (global-hl-line-mode)
4.给helm-gtags定义绑定按键,修改文件 /custom/package-config/setup-helm-gtags.el
内容如下
(require 'helm-gtags) (setq helm-gtags-ignore-case t helm-gtags-auto-update t helm-gtags-use-input-at-cursor t helm-gtags-pulse-at-cursor t helm-gtags-suggested-key-mapping t ) ;; Enable helm-gtags-mode in Dired so you can jump to any tag ;; when navigate project tree with Dired (add-hook 'dired-mode-hook 'helm-gtags-mode) ;; Enable helm-gtags-mode in Eshell for the same reason as above (add-hook 'eshell-mode-hook 'helm-gtags-mode) ;; Enable helm-gtags-mode in languages that GNU Global supports (add-hook 'c-mode-hook 'helm-gtags-mode) (add-hook 'c++-mode-hook 'helm-gtags-mode) (add-hook 'java-mode-hook 'helm-gtags-mode) (add-hook 'asm-mode-hook 'helm-gtags-mode) ;; key bindings (define-key helm-gtags-mode-map (kbd "C-j d") 'helm-gtags-dwim) (define-key helm-gtags-mode-map (kbd "C-j f") 'helm-gtags-find-tag-from-here) (define-key helm-gtags-mode-map (kbd "C-j r") 'helm-gtags-find-rtag) (define-key helm-gtags-mode-map (kbd "C-j s") 'helm-gtags-find-symbol) (define-key helm-gtags-mode-map (kbd "C-j h s") 'helm-gtags-select) (define-key helm-gtags-mode-map (kbd "C-j h f") 'helm-gtags-tags-in-this-function) (define-key helm-gtags-mode-map (kbd "C-j h i") 'helm-semantic-or-imenu) (define-key helm-gtags-mode-map (kbd "M-,") 'helm-gtags-pop-stack) (define-key helm-gtags-mode-map (kbd "C-j p") 'helm-gtags-previous-history) (define-key helm-gtags-mode-map (kbd "C-j n") 'helm-gtags-next-history) (provide 'setup-helm-gtags)
5.小技巧
搜索工具 M + x helm-occur
查看所有按键绑定 M + x describe-bindings
emacs最基本的操作
首先是常用的按键定义如下
C = Control M = Meta = Alt | Esc Del = Backspace RET = Enter
1.光标移动
上 C-p 下 C-n 左 C-b 右 C-f 行頭 C-a 行末 C-e
后翻页 C-v 前翻页 M-v
移动到某一行 M-x goto-line(M-g g)
移到句首 M-a 移到句尾 M-e 移动到下一单词 M-f 移动到上一单词 M-b
移动到文件头 M-< 移动到文件尾 M->
2.删除和剪切操作
光标处后一个文字删除 C-d 光标处一个单词剪切 M-d 光标处后面全剪切 C-k 整行剪切 C-w 向前删1个字符 C-h
粘贴复制 C-y
3.多行复制
标记 ctrl+shift+2, 选定要复制或者剪切的内容。
复制 M-w 剪切 C-w
4.文件打开
C-x C-f :画面下方会显示FindFile:~/,输入文件名即可,如果要新建输入自己想起的名字
5.回车 C-j 行增加 C-o
6.在文件中置换文字,将task换成hoge.
M-% (Esc shift+5)
Query replace: task
Query replace task with: hoge
然后置换地方y,不置换n
7.向上查找 C-r 向下查找 C-s (重复摁可以找下一个或者上一个)
向下查找,光标位置的单词作为查找字符串 C-s C-w
8.窗口命令
垂直分割窗格 C-x 3 水平分割窗格 C-x 2 关闭除了光标所在窗格外所有窗格 C-x 1
切换到其他窗格 C-x o 滚动其他窗格内容 M C-v
在其他窗格中打开文件 C-x 4 f 关闭当前缓冲区和窗格 C-x 4 0
以划分该缓冲区,并使顶部的缓冲区为九行内容的高度 M-9 C-x 2
以划分该缓冲区,并使底部的缓冲区为四行内容的高度 M-- M-4 C-x 2
9.书签
在光标当前位置创建书签 C-x r m 删除书签 M-x bookmark-delete
BOOKMARK 重命名书签 M-x bookmark-rename 跳到指定的书签 C-x r b
打开书签列表 C-x r l 后的一些操作
f: 显示光标所在的书签
o: 在下部窗口显示
q: 退出书签列表
m: 标记在其它的窗口显示
v: 显示被标记的书签,如果没有标记的书签,就显示光标所在的书签
d: 做删除的标记
x: 删除被标记删除的书签
u: 移除标记
10.shell模式
打开shell模式 M-x shell 退出shell(关闭shell buff) C-x k
11.buff操作
切换buff C-x b 文件另存为 C-x C-w
12.设定键位
m + x global-set-key 按“上” comint-previous-input 向上一个命令
m + x global-set-key 按 “下” comint-next-input 向下一个命令
13.撤销命令 C-/ TAB键 C-q TAB 删除连续空格 M-\
14.使用M-x 命令自动补全的操作是 M /
15.当前行在中部下部上部显示 C-l
helm相关操作
1.在helm的查找结果前进 M-. 后退M-,
uITRON .cfg文件
CRE_TSK(TSK1, {TA_HLNG , 0, task1, 1, 1024, NULL}); CRE_TSK(TSK2, {TA_HLNG|TA_ACT, 0, task2, 2, 1024, NULL}); #if 0 CRE_TSK(TSK3, {TA_HLNG|TA_ACT, 0, task3, 3, 1024, NULL}); CRE_TSK(TSK4, {TA_HLNG, 0, task4, 4, 1024, NULL}); CRE_TSK(TSK5, {TA_HLNG, 0, task5, 1, 1024, NULL}); CRE_TSK(TSK6, {TA_HLNG, 0, task6, 1, 1024, NULL}); #define IDX_act_tsk2 6 CRE_TSK(TSK7, {TA_HLNG, IDX_act_tsk2, task7, 1, 1024, NULL}); CRE_TSK(TSK8, {TA_HLNG, IDX_act_tsk2, task7, 2, 1024, NULL}); /* Semaphore definition */ CRE_SEM(SEM1, {TA_TFIFO, 1, 5}); CRE_SEM(SEM2, {TA_TFIFO, 1, 5}); /* Eventflag definition */ CRE_FLG(FLG1, {TA_TFIFO|TA_WSGL, 0}); CRE_FLG(FLG2, {TA_TFIFO|TA_WSGL, 0}); /* Data-queue */ CRE_DTQ(DTQ1, {TA_TFIFO, 16, NULL}); CRE_DTQ(DTQ2, {TA_TFIFO, 16, NULL}); /* Mail-box */ CRE_MBX(MBX1, {TA_TFIFO|TA_MFIFO, 0, NULL}); CRE_MBX(MBX2, {TA_TFIFO|TA_MFIFO, 0, NULL}); /* Fixde length memory pool */ CRE_MPF(MPF1, {TA_TFIFO, 8, 32, NULL}); CRE_MPF(MPF2, {TA_TFIFO, 8, 32, NULL}); /* Cyclic handler */ CRE_CYC(CYC1, {TA_HLNG, 0, cyclic_handler, 100, 100}); CRE_CYC(ALM1, {TA_HLNG, 0, alarm_handler, 30, 0}); /* Intrrupt handler */ DEF_INH(INH_LV4, {TA_HLNG, INH_handler}); #endif /* Initialize routine */ ATT_INI({TA_HLNG, 0, _VTM_init});
source insight常用使用方法
2.跳到某行
ctrl+g
3.显示中的每个字符宽度一致
Alt+F12
4.View菜单
调出或者关闭各种窗口。比如Relative Window可以显示出方法中调用的方法。
5.查找引用
ctrl+/ 选择一个变量或方法后右键Lookup References…
查找结果会在一个框里,点击每条查找结果前面的红色标记(两个红色的相背的三角形),
可以该条结果对应代码文件,进入代码编辑状态;再点击代码中的查找对应行开头的红色标记可以转回查找结果页面。
Lookup References弹出的对话框里可以进行查询的选项配置。比如是否大小写敏感,是不查找注释还是只在注释里查找。
另外Search Method也可以选是字符串、正则、关键字、还是引用类型。
6.查找调用
选中方法名,右键Jump to Caller
7.搜索文件
Ctrl + O
8.打开Symbol Window
Alt + G
Symbol Window,可以快速定位函数、变量定义等
9.F7
显示整个source insight工程的symbols参数
10.Alt+,或者Alt+.
来后退和前进
makefile简单概述
首先写一个简单的makefile
hello: main.o func1.o func2.o (TAB)gcc main.o func1.o func2.o -o hello main.o : main.c (TAB)gcc -c main.c func1.o : func1.c (TAB)gcc -c func1.c func2.o : func2.c (TAB)gcc -c func2.c .PHONY : clean clean: (TAB)rm -f hello main.o func1.o func2.o
规则:用于说明如何生成一个或多个目标文件,格式如下
target :prerequisites
(TAB)command
目标 依赖 命令
main.o : main.c (TAB)gcc -c main.c
1.*** 第一条目标是最终要生成的目标这里是hello应用程序
2.*** 伪目标:makefile中把那些没有任何依赖只有执行动作的目标称为伪目标。
.PHONY 将clean目标声明为伪目标
.PHONY : clean clean: (TAB)rm -f hello main.o func1.o func2.o
3.*** 可以使用变量
obj = main.o func1.o func2.o func3.o hello :$(obj) (TAB)gcc $(obj) -o hello
$^ 代表所有依赖文件
$@ 代表目标
$< 代表第一个依赖文件
hello: main.o func1.o func2.o (TAB)gcc main.o func1.o func2.o -o hello 等价于 hello: main.o func1.o func2.o (TAB)gcc $^ -o $@
4.*** 杂项
makefile中#为注释
@:取消回显,使用方法
hello :hello.c (TAB)@gcc hello.c -o hello
5.*** make命令会去找makefile
也可用make -f 文件名
GDB使用方法
例子程序tst.c
#include <stdio.h> void main() { int i; long result = 0; for ( i=1; i <= 100; i++) { result += i; } printf("result = %d\n",result); }
1.首先编译程序tst.c生成可执行程序tst
gcc -g tst.c -o tst
2.启动GDB
gdb tst
3.在main处设置断点 (b=break)
b main
4.运行程序,程序会停在断点处 缩写r
run
5.单步运行 缩写n
next
6.连续运行 缩写c
continue
7.退出 缩写q
quit
常用命令
list 缩写 l 会显示程序
break 缩写 b 打断点
1.可以是函数
2.可以是行号
3.在多个文件时可以选择某个文件的第几行
例子: b tst.c:25
4.行号加if判断,条件为真断点生效
例子: b 23 if i =10
当i等于10的时候第23行断点生效
info break 查看所有断点
delete 断点号 删除断点操作
print 变量名 查看指定变量值 缩写 p
step 单步运行程序(进入子程序) 缩写s
next 也是单步运行程序 (不会进入子程序)
continue 继续运行程序,遇到断点会停下来,没有断点继续运行。 缩写c
finish 运行程序直到当前函数结束
watch 变量名 对指定变量进行监控
即,在使用watch时步骤如下:
1. 使用break在要观察的变量所在处设置断电;
2. 使用run执行,直到断点;
3. 使用watch设置观察点;
4. 使用continue观察设置的观察点是否有变化。