享受Code::Blocks编辑快感的几个关键[转]

2009年10月05日 01:25

http://blog.csdn.net/Utensil/archive/2008/12/24/3593502.aspx

http://wxforum.shadonet.com/viewtopic.php?t=22128

说明:

1)以下需要设置的地方均在Settings->Editor...弹出的对话框中。

2)不少命令都可针对当前行或选中的代码块,下文简称当前行或选中块。

==日常编辑==

    • 按住Ctrl滚滚轮,代码的字体会随你心意变大变小,对保护视力特别有好处。
    • 在编辑区按住右键可拖动代码,省去拉(尤其是横向)滚动条之麻烦;相关设置:Mouse Drag Scrolling。
    • Ctrl+D可复制当前行或选中块。
    • Ctrl+Shift+C注释掉当前行或选中块,Ctrl+Shift+X则解除注释。
    • Tab缩进当前行或选中块,Shift+Tab减少缩进。
    • 可拖动选中块使其移动到新位置,按住Ctrl则为复制到新位置。
    • 按下Atl,再拖动鼠标,可以实现部分选择(即只选中一个区域内的字符,而不会包含它们所在行的其他字符)。
    • 需要更大编辑空间时,F2和Shift+F2分别可以显隐下方Logs & others栏和左方的Management栏。

==自动完成与缩写==

1)优化代码自动完成功能:在Code-completion and symbol browser中,
    • 将Automatically launch when typed # letter中的4改成2,这样打两个字母就会有提示了。
    • 将Keyword sets to additionally include中1到9都勾上(可在Syntax highlighting 的keywords...中设置,其中1是C++关键字,3是Doxygen关键字;我曾将wxWidgets的类名都加入7并设置相应的字体(粗黑体),看代码时特别爽)
    • 将Delay for auto-kick-in when typing [.::->]拉到 200ms,这样快点出来提示
    • 选中Case-sensitive match,防止一些无关的东西干扰,如果你想它帮你纠正大小写,那就去掉勾
    • 在Keyboard short-cuts中将Edit->Code complete的快捷键由Ctrl+Space改为Alt+/,因为前者与中文输入法切换冲突,该快捷键为已经输入的(不是正在输入的)词提供自动完成。

2)看Abbreviation一栏,里面定义了许多缩写(还可以自定义),只要输入这些缩写,并按Ctrl+J,就可以自动完成常用的代码框架,并将光标放在恰当的地方(自定义时用|表达)。常用的有:guard、class、switch等。

3)如果你声明了一个类,你可以在cpp文件中右击,Insert->All class methods without implementation...来插入你还没定义的方法的定义(省去不少打字的功夫哦),也可使用Insert->Class Method declaration/implementation...来插入一个方法的声明或定义。

==导航相关==

    • Ctrl+G 到达指定行,ALT+G 到达指定文件,Ctrl+Alt+G 到达指定函数(支持头文件中的函数定义),F11 切换源文件与头文件。
    • Ctrl+PageUp 到达上一个函数,Ctrl+PageDown 到达下一个函数。
    • Ctrl+B 添加书签,Alt+PageUp和Alt+PageDown可以切换书签。
    • Ctrl+Shift+B可找到匹配的括号。
    • 看长代码时,可右击,Folding->Fold All,然后慢慢展开来看,也可充分利用左方Management栏的Symbol浏览器。
    • 在一个变量、函数或宏上右击,三个以Find开头的菜单项,分别可以为你转到它的声明、定义和找到所有出现的地方(按F2在下方Thread Search那里查看)。
其他:
    • General Settings中可以设置缩进、自动换行等细节。
    • 让Code::Blocks永远记住你的Layout,尤其是debug的layout,善用debug工具栏。
    • 备份C:\Documents and Settings\[你的用户名]\Application Data\codeblocks\Default.conf,如遇重装,将其放在codeblocks.exe所在目录,就不会丢失你的配置;这样也可以 打造出Code::Blocks的绿色版。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Utensil/archive/2008/12/24/3593502.aspx

评论(1) 阅读(1582)

汇编笔记

2009年10月01日 03:36

串处理指令判断字符串相等

LEA SI, PSW1 ;源字符串
LEA DI, BUFF ;目的字符串
MOV CX, BX ;计数
CLD ;使DF=0,地址自动增量
REPE CMPSB ;比较字符串PSW1和BUFF
.IF ZERO? ;若字符串的相应字符相同
……

清屏幕

Clear PROC Near Uses AX BX CX DX ;清屏幕,并保护所用寄存器
        MOV CL, 0
        MOV CH, 0
        MOV DL, 79
        MOV DH, 24 ;(0,0)-(24,79)是屏幕的左上角和右下角
        MOV BH, 7
        MOV AL, 0 ;AL=滚动行数(0——清窗口)
        MOV AH, 6 ;AH=06H——向上滚屏
        INT 10H
        RET
Clear ENDP
BIOS显示彩色字符串
;在位置(5,20)的位置显示蓝色字符串
MOV BP, OFFSET MSG1 ;显示字符串首地址
MOV BL, 09H ;属性:蓝色
MOV CX, 0AH ;显示字符串长度:10
MOV AL, 0 ;写方式 (0~3)
MOV BH, 0 ;页号
MOV DH, 5 ;起始行
MOV DL, 20 ;起始列
MOV AH, 13H
INT 10H ;使用中断10H之功能13H来显示字符串

暂停,任意键关闭 DOS 和 BIOS

mov ah,1
int 21h

mov ah,0
int 16h

检测上下左右

 .IF AH==50H ;↓
        inc location
.ELSEIF AH==48H ;↑
        DEC location
.ELSEIF AH==4DH ;→
        inc location+1
.ELSEIF AH==4BH ;←
        DEC location+1
 .ENDIF

延时程序

WAITF PROC NEAR ;延时子程序
        PUSH AX
WAITF1:
        IN AL,61H
        AND AL,10H
        CMP AL,AH
        JE WAITF1
        MOV AH,AL
        LOOP WAITF1
        POP AX
        RET
WAITF ENDP

…………

;调用
MOV CX,33144
CALL WAITF

书上的以16进制显示BX寄存器内容的程序 改正一点地方

SHOWBX PROC near
        MOV CH,4
        MOV CL,4
rotate:
        ROL BX,CL
        MOV AL,BL
        AND AL,0FH
        ADD AL,30H
        CMP AL,3AH
        JL printit
        ADD AL,7H
printit:
        MOV DL,AL
        MOV AH,2
        INT 21H
        DEC CH
        JNZ rotate
        RET
SHOWBX ENDP

两个有用的输出宏

printchar macro char,len,row,lie,col ;输出字符到指定位置
 mov ah,2
 mov bh,0
 mov dh,row
 mov dl,lie
 int 10h
 mov bl,col
 mov bh,0
 mov al,char
 mov ah,09h
 mov cx,len
 int 10h
endm

printstr macro string,len,row,lie ;输出字符串到指定位置
 ;mov ah,13
 ;mov bp,seg string
 ;mov es,bp
 mov bp,offset string
 mov cx,len
 mov dh,row
 mov dl,lie
 mov bh,0
 mov ax,1300h
 mov bl,6
 int 10h
endm

 不堵塞的按键检测

in al,60h

 

 

 

 

 

 

评论(1) 阅读(1593)

柴静的演讲:认识的人,了解的事

2009年9月30日 17:18

完整视频 http://www.tudou.com/programs/view/aRmia8XXsRQ

 

认识的人,了解的事

 

十年前,在从拉萨飞回北京的飞机上,我的身边坐了一个50多岁的女人,她是30年 前去援藏的,这是她第一次因为治病而到北京,下了飞机,下很大的雨,我把她送到了北京的一个旅店里,过了一个星期我去看她,她说她的病已经确症了,是胃癌 的晚期,然后她指了下床头有个箱子,她说如果我回不去的话,你帮我保存这个。这是她三十年当中走遍西藏各地跟各种人:官员、汉人、喇嘛、三陪女交谈的记 录,她没有任何职业身份,也知道这些东西不能发表,她只是说100年之后,如果有人看到的话,会知道今天的西藏发生了什么。

 

这个人,姓熊,拉萨一中的女教师。

 

五年前我采访了一个人,这个人在火车上买了一瓶15毛钱的水,然后他问列车员要发票。列车员乐了,说我们火车上自古就没有发票,然后这个人把铁道部告上了法庭,他说,人们在强大的力量面前总是选择服从,但是今天如果我们放弃了15毛 钱的发票,明天我们就有可能被迫放弃我们的土地权、财产权和生命的安全。权利如果不用来争取的话,权利就只是一张纸。他后来赢了一场官司,我以为他会跟铁 道部结下梁子,结果他上了火车后,在餐车要了一份饭,列车长亲自把这个饭菜端到他面前说,您是现在要发票呢?还是吃完之后我再给您送过来? 我问他,你靠什么赢得尊重? 他说,我靠为我的权利所做的斗争。

 

这个人叫郝劲松,34岁的律师。

 

去年,我认识一个人,我们在一起吃饭,这个60多岁的男人,说起来丰台区的一所民工小学被拆迁的事儿,他说所有的孩子靠在墙上哭,说到这儿的时候,他也动感情了,然后他从裤兜里面掏出一块皱皱巴巴的蓝布手绢儿,擦擦眼睛,这个人18岁的时候当大队的出纳,后来当教授,当官员,他说他所有做这些事的目的,只是为了想给农民做一点事, 他在我的采访中说到,征地问题给农民的不是价格,只是补偿,这个分配机制极不合理,这个问题的根源不仅出在土地管理法,还出在1982年的宪法修正案。在审这一期节目的时候,我的领导说了一句话,说这个人就算说得再尖锐,我们也能播,我说为什么,他说因为他特别真诚。

 

这个人叫陈锡文,中央财经领导小组办公室主任。

 

七 年前,我问过一个老人,我说您的一生也经历了很多的挫折,您靠什么来保持您年轻时候的情怀?他跟我讲,有一年他去河北视察,没有走当地安排的路线,然后在 路边发现了一个老农民,旁边放了一副棺材,他就下车去看,那个老农民说,因为太穷了,没钱治病,就把自己的棺材板拿出来卖。这个老人就给了他500块钱,让他回家。他说我讲这个故事给你听是要告诉你中国大地上的事情是无穷无尽的,不要在乎一城一池的得失,要执着。

 

这个人叫温家宝,中华人民共和国总理。

 

一 个国家是由一个个具体的人构成的,她由这些人创造并且决定,只有一个国家能够拥有那些寻求真理的人,能够独立思考的人,能够记录真实的人,能够不计利害为 这片土地付出的人,能够去捍卫自己宪法权利的人,能够知道世界并不完美但仍然不言乏力不言放弃的人,只有一个国家拥有这样的头脑和灵魂。我们才能说我们为 祖国骄傲,只有一个国家能够尊重这样的头脑和灵魂,我们才能说我们有信心让明天更好。谢谢各位。

评论(1) 阅读(1511)

汇编 以16进制显示AX

2009年9月30日 03:55

开始用MasmPlus 因为觉得一步完成很好用 还是不会调试 于是就把AX打出来吧

 

.model small
.stack 200h
.data
szLetter db '0123456789ABCDEF','H',0DH,0AH,'$'
.CODE

SHOWAX PROC uses AX BX CX DX
        mov cl,16
AGAIN:
        PUSH AX
        SUB CL,4
        SHR AX,CL ;移动到需要的位数
        MOV BL,AL
        AND BX,0FH
        MOV DL,szLetter[BX] ;查表
        mov ah,2
        int 21h
        POP AX
        CMP CL,0
        JNE AGAIN
        LEA DX,szLetter[16] ;H和回车
        mov ah,9
        int 21h
        RET
SHOWAX ENDP

START:
mov ax,@data
mov ds,ax

mov ax,6549h
INVOKE SHOWAX

;暂停,任意键关闭
mov ah,1
int 21h
mov ah,4ch     ;结束,可以修改al设置返回码
int 21h
END START

 

 

评论(0) 阅读(2247)

小写字母变成大写字母的汇编程序

2009年9月29日 00:39

    停课了,这是第二周,自己看着汇编


DSEG    SEGMENT
        STRING DB 'hello bird!',0DH,0AH,'$'
DSEG    ENDS

STACK1  SEGMENT   STACK
        DB 256 DUP(?)
STACK1  ENDS

CSEG    SEGMENT

        ASSUME  CS:CSEG, DS:DSEG, SS:STACK1

START:
        MOV AX,DSEG
        MOV DS,AX
        MOV BX,OFFSET STRING

        MOV AX,0
        MOV SI,AX
STR_L:  CMP STRING[SI],'a'
        JB NEXT
        CMP STRING[SI],'z'
        JA NEXT
        SUB STRING[SI],20H
NEXT:   INC SI
        CMP STRING[SI],'$'
        JNZ STR_L
       
        MOV DX,OFFSET STRING ;这句可以用LEA DX,NOTE来替代,DX是数据通用寄存器
        MOV AH,09H ;09H对应的是显示字符串
        INT 21H

        MOV     AX, 4C00H
        INT     21H

CSEG    ENDS

END START
 

 

循环的那段本来按书上这么写的

        MOV CX,11D
        MOV AX,0
        MOV SI,AX
STR_L:  CMP STRING[SI],'a'
        JB NEXT
        CMP STRING[SI],'z'
        JA NEXT
        SUB STRING[SI],20H
NEXT:   INC SI
        LOOP STR_L

 

然后貌似还可以这样

        MOV AX,0
        MOV SI,AX
STR_L:  .IF STRING[SI]>='a' && STRING[SI]<='z'
        SUB STRING[SI],20H
        .ENDIF
        INC SI
        CMP STRING[SI],'$'
        JNZ STR_L

评论(3) 阅读(3778)