您的位置:首页 > 其它

解决了 source insight 设置为 微软雅黑后 中文字体重影

2013-02-17 15:08 691 查看














































换了win7 64位。 重新设置source insight 字体大小,因为这个18寸的屏幕,看在19寸上合适的字体,显得太大,每次看混乱的代码都窝火。。

我的眼睛啊,我的审美啊。。

红色字的方法解决了 source insight 设置为 微软雅黑中文字体重影的问题。。。

我是把注释和多行注释都设为 ”黑体“了。。
感谢好一些。



而代码字体,我用的是微软雅黑。

(1)设置字体大小;设置Tab为4个空格。

长时间看程序谁也受不了,所以设置大号字体是必须的。

在Option->Docutment Option里设置Screen Fonts和Tab Width。

另外点击Auto Indenting,取消右边的两个选择,即设置{和}不自动缩进

(2)设置中文注释为一个字符宽度

baidu来的,很管用。在Option->Style Properties中,先在左边列表里选择Comment,在右边的Font Name下拉菜单中选择Pick,然后设置为宋体等,设置完了就Ok。同样选择Comment Multi Line完成相同操作。

==============================================================





















































































【转】使用source insight的一些设置

http://hi.baidu.com/kaikong/item/d04f7ef794c095b531c199e7

source insight 3.50,英文版。相信一定有人用的相同的设置。

(1)设置字体大小;设置Tab为4个空格。

长时间看程序谁也受不了,所以设置大号字体是必须的。

在Option->Docutment Option里设置Screen Fonts和Tab Width。

另外点击Auto Indenting,取消右边的两个选择,即设置{和}不自动缩进

(2)设置中文注释为一个字符宽度

baidu来的,很管用。在Option->Style Properties中,先在左边列表里选择Comment,在右边的Font Name下拉菜单中选择Pick,然后设置为宋体等,设置完了就Ok。同样选择Comment Multi Line完成相同操作。

(3)更改快捷键

取消小键盘,baidu来的:

Options菜单àKey assignments,通过关键词Scroll 找到Scroll Half Page Up,取消小键盘/;通过关键词Scroll 找到Scroll Half Page Down取消小键盘*;通过关键词Function找到Function Up,取消小键盘-,通过关键词Function找到Function down,取消小键盘+。

设置全选快捷键:在Options菜单àKey assignments里面找到Save all,取消ctrl+a快捷键;选择select all,设置为Ctrl+a。

设置删除整行快捷键,Edit: Delete Line设为shift+del.

(4)双字符操作更好一些

baidu来的,使用下面的一个宏,即Project→Open Project,打开Base项目;新建一个SuperBackSpace.em文件,将下面的代码加入进去并保存,并将文件加入到Base项目;重启SourceInsight;打开Options→Key Assignments,将Marco: SuperBackspace绑定到BackSpace键,Marco: SuperCursorLeft绑定到<-键,Marco: SuperCursorRight绑定到->键,Marco: SuperShiftCursorLeft绑定到Shift+<-,macro,SuperShiftCursorRight绑定到shift+->,Macro:SuperDelete绑定到del。

//**

* 2006 丁兆杰 Ding Zhaojie

*

*

* SuperBackspace Version 0.1beta

*

* 代替SourceInsight原有的Backspace功能(希望如此)

* 增加了对双字节汉字的支持,在删除汉字的时候也能同时删除汉字的高字节而缓解半个汉字问题

* 能够对光标在汉字中间的情况进行自动修正

*

* 安装:

* ① 复制入SourceInsight安装目录;

* ② Project→Open Project,打开Base项目;

* ③ 将复制过去的SuperBackspace.em添加入Base项目;

* ④ 重启SourceInsight;

* ⑤ Options→Key Assignments,将Marco: SuperBackspace绑定到BackSpace键;

* ⑥ Enjoy!!

*

* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation; either version 2 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software

* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*/

macro SuperBackspace()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop; // empty buffer

// get current cursor postion

ipos = GetWndSelIchFirst(hwnd);

// get current line number

ln = GetBufLnCur(hbuf);

if ((GetBufSelText(hbuf) != "") || (GetWndSelLnFirst(hwnd) != GetWndSelLnLast(hwnd))) {

// sth. was selected, del selection

SetBufSelText(hbuf, " "); // stupid & buggy sourceinsight :(

// del the " "

SuperBackspace(1);

stop;

}

// copy current line

text = GetBufLine(hbuf, ln);

// get string length

len = strlen(text);

// if the cursor is at the start of line, combine with prev line

if (ipos == 0 || len == 0) {

if (ln <= 0)

stop; // top of file

ln = ln - 1; // do not use "ln--" for compatibility with older versions

prevline = GetBufLine(hbuf, ln);

prevlen = strlen(prevline);

// combine two lines

text = cat(prevline, text);

// del two lines

DelBufLine(hbuf, ln);

DelBufLine(hbuf, ln);

// insert the combined one

InsBufLine(hbuf, ln, text);

// set the cursor position

SetBufIns(hbuf, ln, prevlen);

stop;

}

num = 1; // del one char

if (ipos >= 1) {

// process Chinese character

i = ipos;

count = 0;

while (AsciiFromChar(text[i - 1]) >= 160) {

i = i - 1;

count = count + 1;

if (i == 0)

break;

}

if (count > 0) {

// I think it might be a two-byte character

num = 2;

// This idiot does not support mod and bitwise operators

if ((count / 2 * 2 != count) && (ipos < len))

ipos = ipos + 1; // adjust cursor position

}

}

// keeping safe

if (ipos - num < 0)

num = ipos;

// del char(s)

text = cat(strmid(text, 0, ipos - num), strmid(text, ipos, len));

DelBufLine(hbuf, ln);

InsBufLine(hbuf, ln, text);

SetBufIns(hbuf, ln, ipos - num);

stop;

}

/*

以下是自编,参考上面以及SourceInsight中的chm帮助文档;

有缺点:(1)移动箭头也会记录到历史操作步骤,应该能够避免这些操作被记录;(2)函数没有整理,有冗余;

*/

//2、删除键——SuperDelete.em

macro SuperDelete()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop; // empty buffer

// get current cursor postion

ipos = GetWndSelIchFirst(hwnd);

// get current line number

ln = GetBufLnCur(hbuf);

if ((GetBufSelText(hbuf) != "") || (GetWndSelLnFirst(hwnd) != GetWndSelLnLast(hwnd))) {

// sth. was selected, del selection

SetBufSelText(hbuf, " "); // stupid & buggy sourceinsight :(

// del the " "

SuperDelete(1);

stop;

}

// copy current line

text = GetBufLine(hbuf, ln);

// get string length

len = strlen(text);



if (ipos == len || len == 0) {

totalLn = GetBufLineCount (hbuf);

lastText = GetBufLine(hBuf, totalLn-1);

lastLen = strlen(lastText);

if (ipos == lastLen)// end of file

stop;

ln = ln + 1; // do not use "ln--" for compatibility with older versions

nextline = GetBufLine(hbuf, ln);

nextlen = strlen(nextline);

// combine two lines

text = cat(text, nextline);

// del two lines

DelBufLine(hbuf, ln-1);

DelBufLine(hbuf, ln-1);

// insert the combined one

InsBufLine(hbuf, ln-1, text);

// set the cursor position

SetBufIns(hbuf, ln-1, len);

stop;

}

num = 1; // del one char

if (ipos > 0) {

// process Chinese character

i = ipos;

count = 0;

while (AsciiFromChar(text[i-1]) >= 160) {

i = i - 1;

count = count + 1;

if (i == 0)

break;

}

if (count > 0) {

// I think it might be a two-byte character

num = 2;

// This idiot does not support mod and bitwise operators

if (((count / 2 * 2 != count) || count == 0) && (ipos < len-1))

ipos = ipos + 1; // adjust cursor position

}

// keeping safe

if (ipos - num < 0)

num = ipos;

}

else {

i = ipos;

count = 0;

while(AsciiFromChar(text[i]) >= 160) {

i = i + 1;

count = count + 1;

if(i == len-1)

break;

}

if(count > 0) {

num = 2;

}

}



text = cat(strmid(text, 0, ipos), strmid(text, ipos+num, len));

DelBufLine(hbuf, ln);

InsBufLine(hbuf, ln, text);

SetBufIns(hbuf, ln, ipos);

stop;

}

//3、左移键——SuperCursorLeft.em

macro IsComplexCharacter()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

return 0;

//当前位置

pos = GetWndSelIchFirst(hwnd);

//当前行数

ln = GetBufLnCur(hbuf);

//得到当前行

text = GetBufLine(hbuf, ln);

//得到当前行长度

len = strlen(text);

//从头计算汉字字符的个数

if(pos > 0)

{

i=pos;

count=0;

while(AsciiFromChar(text[i-1]) >= 160)

{

i = i - 1;

count = count+1;

if(i == 0)

break;

}

if((count/2)*2==count|| count==0)

return 0;

else

return 1;

}

return 0;

}

macro moveleft()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop; // empty buffer



ln = GetBufLnCur(hbuf);

ipos = GetWndSelIchFirst(hwnd);

if(GetBufSelText(hbuf) != "" || (ipos == 0 && ln == 0)) // 第0行或者是选中文字,则不移动

{

SetBufIns(hbuf, ln, ipos);

stop;

}

if(ipos == 0)

{

preLine = GetBufLine(hbuf, ln-1);

SetBufIns(hBuf, ln-1, strlen(preLine)-1);

}

else

{

SetBufIns(hBuf, ln, ipos-1);

}

}

macro SuperCursorLeft()

{

moveleft();

if(IsComplexCharacter())

moveleft();

}

//4、右移键——SuperCursorRight.em

macro moveRight()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop; // empty buffer

ln = GetBufLnCur(hbuf);

ipos = GetWndSelIchFirst(hwnd);

totalLn = GetBufLineCount(hbuf);

text = GetBufLine(hbuf, ln);

if(GetBufSelText(hbuf) != "") //选中文字

{

ipos = GetWndSelIchLim(hwnd);

ln = GetWndSelLnLast(hwnd);

SetBufIns(hbuf, ln, ipos);

stop;

}

if(ipos == strlen(text)-1 && ln == totalLn-1) // 末行

stop;

if(ipos == strlen(text))

{

SetBufIns(hBuf, ln+1, 0);

}

else

{

SetBufIns(hBuf, ln, ipos+1);

}

}

macro SuperCursorRight()

{

moveRight();

if(IsComplexCharacter()) // defined in SuperCursorLeft.em

moveRight();

}

//5、shift+右移键——ShiftCursorRight.em

macro IsShiftRightComplexCharacter()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

return 0;

selRec = GetWndSel(hwnd);

pos = selRec.ichLim;

ln = selRec.lnLast;

text = GetBufLine(hbuf, ln);

len = strlen(text);

if(len == 0 || len < pos)

return 1;

//Msg("@len@;@pos@;");

if(pos > 0)

{

i=pos;

count=0;

while(AsciiFromChar(text[i-1]) >= 160)

{

i = i - 1;

count = count+1;

if(i == 0)

break;

}

if((count/2)*2==count|| count==0)

return 0;

else

return 1;

}

return 0;

}

macro shiftMoveRight()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop;



ln = GetBufLnCur(hbuf);

ipos = GetWndSelIchFirst(hwnd);

totalLn = GetBufLineCount(hbuf);

text = GetBufLine(hbuf, ln);

selRec = GetWndSel(hwnd);

curLen = GetBufLineLength(hbuf, selRec.lnLast);

if(selRec.ichLim == curLen+1 || curLen == 0)

{

if(selRec.lnLast == totalLn -1)

stop;

selRec.lnLast = selRec.lnLast + 1;

selRec.ichLim = 1;

SetWndSel(hwnd, selRec);

if(IsShiftRightComplexCharacter())

shiftMoveRight();

stop;

}

selRec.ichLim = selRec.ichLim+1;

SetWndSel(hwnd, selRec);

}

macro SuperShiftCursorRight()

{

if(IsComplexCharacter())

SuperCursorRight();

shiftMoveRight();

if(IsShiftRightComplexCharacter())

shiftMoveRight();

}

//6、shift+左移键——ShiftCursorLeft.em

macro IsShiftLeftComplexCharacter()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

return 0;

selRec = GetWndSel(hwnd);

pos = selRec.ichFirst;

ln = selRec.lnFirst;

text = GetBufLine(hbuf, ln);

len = strlen(text);

if(len == 0 || len < pos)

return 1;

//Msg("@len@;@pos@;");

if(pos > 0)

{

i=pos;

count=0;

while(AsciiFromChar(text[i-1]) >= 160)

{

i = i - 1;

count = count+1;

if(i == 0)

break;

}

if((count/2)*2==count|| count==0)

return 0;

else

return 1;

}

return 0;

}

macro shiftMoveLeft()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop;



ln = GetBufLnCur(hbuf);

ipos = GetWndSelIchFirst(hwnd);

totalLn = GetBufLineCount(hbuf);

text = GetBufLine(hbuf, ln);

selRec = GetWndSel(hwnd);

//curLen = GetBufLineLength(hbuf, selRec.lnFirst);

//Msg("@curLen@;@selRec@");

if(selRec.ichFirst == 0)

{

if(selRec.lnFirst == 0)

stop;

selRec.lnFirst = selRec.lnFirst - 1;

selRec.ichFirst = GetBufLineLength(hbuf, selRec.lnFirst)-1;

SetWndSel(hwnd, selRec);

if(IsShiftLeftComplexCharacter())

shiftMoveLeft();

stop;

}

selRec.ichFirst = selRec.ichFirst-1;

SetWndSel(hwnd, selRec);

}

macro SuperShiftCursorLeft()

{

if(IsComplexCharacter())

SuperCursorLeft();

shiftMoveLeft();

if(IsShiftLeftComplexCharacter())

shiftMoveLeft();

}

============================================================================

Source Insight技巧收集

1、背景色选择

要改变背景色Options->preference->windows background->color设置背景色

2、解决字符等宽对齐问题。

SIS默认字体是VERDANA,很漂亮。这网页上应该也是用的VERDANA字体。但由于美观的缘故,VERDANA字体是不等宽的。比如下面两行

llllllllll

MMMMMMMMMM

同样10个字符,长度差多了.用VERDANA来看程序,有些本应该对齐的就歪了。解放方法是使用等宽的字体,但肯定比较丑。比较推荐的是用Courier New。

3、解决TAB键缩进问题

Options-> Document Options里面的右下角Editing Options栏里,把Expand tabs勾起来,然后确定。OK,现在TAB键的缩进和四个空格的缩进在SIS里面看起来就对齐咯

4、SI中的自动对齐设置:

在C程序里, 如果遇到行末没有分号的语句,如IF, WHILE, SWITCH等, 写到该行末按回车,则新行自动相对上一行缩进两列。

Option->Document option下的Auto Indient中Auto Indient Type有三种类型 None,Simple,Smart。个人推荐选用Simple类型。

5、向项目中添加文件时,只添加特定类型的文件(文件类型过滤器)

编辑汇编代码时,在SIS里建立PROJECT并ADD TREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都包含进来

只加了.inc和.asm后缀的,.s后缀的没有。而且用SIS打开.s的文件,一片黑白没有色彩,感觉回到DOS的EDIT时代了……

解决方法是在Options->Document Options里面,点左上的Document Type下拉菜单,选择x86 Asm Source File,

然后在右边的File filter里*.asm;*.inc;的后面加上*.s;接着CLOSE就可以了。

上面问题解决了,但注意加入*.s后还需要重新ADD TREE一遍才能把这些汇编加到PROJECT里面。

6、添加文件类型

用户可以定义自己的类型,Options->Document Options->add type,定义文件类型名以及文件名后缀。

勾选include when adding to projects在添加目录下文件到工程是该类文件就会添加进SI的工程。

如果需要将所有文件添加进SI的工程,可以定义一种文件类型*.*。

7、恢复ctrl+a的全选功能

通过关键词save 找到save all,更改为ctrl+shift+a,通过关键词select找到select all,更改为ctrl +a

Source Insight常用的快捷键:

Ctrl+= :Jump to definition

Alt+/ :Look up reference

F3 : search backward

F4 : search forward

F5: go to Line

F7 :Look up symbols

F8 :Look up local symbols

F9 :Ident left

F10 :Ident right

Alt+, :Jump backword

Alt+. : Jump forward

Shift+F3 : search the word under cusor backward

Shift+F4 : search the word under cusor forward

F12 : incremental search

Shift+Ctrl+f: search in project

shift+F8 : hilight word

Source Insight的窗口操作:

project window Ctrl+O打开

symbol window Alt+F8打开和关闭

Contex Window 自定义键打开和关闭

Relation Window 自定义键打开 先锁定再刷新联系

在Source Insight中添加自定义功能的步骤如下:

1.Source Insight中,Options->Custom Commands...->Add...,New Command name 随便写,我的是"Edit with Vim"

2.Run中写入: "C:\Program Files\Vim\vim63\gvim.exe" --remote-silent +%l %f

意思是在当前已经打开的gvim窗口里面打开当前的文件,并且跳转到指定行

%l为当前的行号,%f为文件名

使用 --remote-silent 的作用是,如果已经打开了对应文件,就不会打开第二次,而是在已经打开的文件里跳转到对应行

3.还是同一个对话框里面,选择Keys->Assign New Key...->按F12,如果你已经将F12设置给其他命令,选择其他的按键就行了

下面是一些常用自定义功能:( CUSTOM COMMANDS )

打开资源管理器并选中当前文件

ShellExecute open explorer /e,/select,%f

查看log

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:log /path:%f /notempfile /closeonend

diff

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:diff /path:%f /notempfile /closeonend

取得锁定(check out)

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:lock /path:%f /notempfile /closeonend

提交(check in)

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:commit /path:%f /notempfile /closeonend

更新(update)

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:%f /notempfile /closeonend

更新整个目录(update all)

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:*.* /notempfile /closeonend

取消锁定(undo check out)

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:revert /path:%f /notempfile /closeonend

在ultriEdit中编辑

"C:\Program Files\UltraEdit-32/uedit32" %f

在vim中编辑并定位到当前行

"C:\Program Files\Vim\vim63\gvim.exe" --remote-silent +%l %f

汇总其他小技巧:

让{ 和 } 不缩进:

Options->Document Options->Auto Indent->Indent Open Brace/Indent Close Brace

hao space: SourceInsight 小技巧

1、按住"ctrl", 再用鼠标指向某个变量,点击一下,就能进入这个变量的定义。

2、今天把一个用sourceinsight排版整齐的C文件,偶然用VC打开一看,全乱了。研究了半天,发现SI对每个字符的宽度不太一致。

请教同事发现选上"view --> draft view", 就可以让每个字符的宽度一致了。快捷键是 "Alt + F12"

3、"shift+F8" 标亮所有文本中光标所在位置的单词

4、跳到某一行:"ctrl + g"

Source Insight是阅读和编写代码的好东东,基本上也算得上是经典之作了,虽然还有一点点小bug,不过对于我们这些C程序员来说可是一旦拥有别无所求。下列小技巧是在工作中同事整理总结的,对提高工作效率多少有点帮助,其中有些是对应于SVN的,没有使用SVN做版本管理的人就不要白费力气了。

ShellExecute open explorer /e,/select,%f

/*作用是在资源管理器中打开当前编辑文件并选中*/

/*可以设置快捷键如ctrl+e,这样能很方便的在资源管理器打开对应的文件,并进行tortoiseSVN的相关操作*/

X:\Progra~1\TortoiseSVN\bin\TortoiseProc.exe /command:log /path:% /notempfile /closeonend

/*使用前注意更改对应的bin安装路径*/

/*作用是直接查看当前文件的svn log*/

/*可以设置快捷键如ctrl+l*/

X:\Progra~1\TortoiseSVN\bin\TortoiseProc.exe /command:diff /path:% /notempfile /closeonend

/*使用前注意更改对应的bin安装路径*/

/*作用是直接查看当前文件和基准版本的比较*/

/*可以设置快捷键如ctrl+d*/

Source Insight中的文件过滤器

遇到在新建工程的时候,需要加入一些除了.c .h 等之外的文件,比如.s,.scf ,Makefile和ReleaseNotes等文件,而每次新建工程的时候,即使取消了shown only known document types,和在点击Add All之后选择了Recusively add lower sub-directories ,也还是不能正常识别这类文件,也就不能加入进工程,只能我们自己手动双击添加到工程中,如果文件少还无所谓,但是包含了很多子文件夹的大工程,这样实在不可行。

百度了下,终于发现解决办法了:

打开Source Insight,在新建工程之前,进入

Options -> Document Options... Alt-T -> 点击Document Type的下拉框,然后选择Make File,在右边的File Filter中,在原先的*.mak后面加上一个分号,即多个不同过滤规则以分号间隔开,再加上*makefile,变成 *.mak;*makefile,并且选中Include when adding to projects,这样,以后再新建工程的时候,就可以识别makefile或Makefile了(好像此处Source Insight并不区分大小写)。

类似的原理,给其他你想要加入的不同的类型的文件,分别加入到原先的一些文件类型后面,注意要用分号隔开,或者直接新建一个文件类型,然后写上对应的顾虑规则,比如

点击 Add Type,填入新文件类型的名字Scatter File,File Filter中写上*.scf,注意再选中下面的Include when adding to projects,这样就建立了一个新的文件类型, 以后新建工程加入文件时候,系统就能够识别后缀是scf的文件了。

当然感兴趣的,还可以对你新建立的文件类型进行一些格式化设置。包括Parsing,Tab等等设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: