2012年6月20日星期三

vim的空格tab配置

vim中shiftwidth, tabstop, softtabstop和expandtab的意义

from: ludonghai715
1 shiftwidth
这个是用于程序中自动缩进所使用的空白长度指示的。一般来说为了保持程序的美观,和下面的参数最好一致。同时它也是符号移位长度的制定者。
2 tabstop定 义tab所等同的空格长度,一般来说最好设置成8,因为如果是其它值的话,可能引起文件在打印之类的场合中看起来很别扭。除非你设置 了 expandtab模式,也就是把tabs转换成空格,这样的话就不会一起混淆,不过毕竟制表符为8是最常用最普遍的设置,所以一般还是不要改。
3 softtabstop如 果我们希望改变程序中的缩进怎么办?shiftwidth和tabstop不一样的话,你会发现程序比较难看的。这时候,softtabstop就起作用 了。可以从vim的说明中看到,一旦设置了softtabstop的值时,你按下tab键,插入的是空格和tab制表符的混合,具体如何混合取决于你设定 的softtabstop,举个例子,如果设定softtabstop=8, 那么按下tab键,插入的就是正常的一个制表符;如果设定 softtabstop=16,那么插入的就是两个制表符;如果softtabstop=12,那么插入的就是一个制表符加上4个空格;如 果 softtabstop=4呢?那么一开始,插入的就是4个空格,此时一旦你再按下一次tab,这次的四个空格就会和上次的四个空格组合起来变成一个 制表符。换句话说,softtabstop是“逢8空格进1制表符”,前提是你tabstop=8。
4 关于expandtab举个例子,在多人一起开发项目时,为了使代码风格尽量保持一致,一般不允许在代码使用TAB符,而以4个空格代之。我们可以编辑一个文件,包含下面的内容:
set shiftwidth=4
set expandtab
然后把下面的命令加入到.vimrc中:
autocmd FileType c,cpp set shiftwidth=4 | set expandtab
就可以只在编辑c和cpp文件时实行这种设置了


set autoindent ruler 启用自动缩进
filetype plugin indent on 允许载入indent插件
再set 查看下syntax与shiftwidth的值,syntax应为javascript shiftwidth为2, 4, 8等

2012年6月15日星期五

pywin32 xp下安装错误

在 python 中 import win32api 时出现

?
>>> import win32api
Traceback (most recent call last):
  File "", line 1, in
ImportError: DLL load failed: 找不到指定的模块。
>>>
解决方法:
拷贝
C:\Python26\Lib\site-packages\pywin32_system32\*

C:\Windows\System32

2012年6月13日星期三

gdb thread

info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。 thread ID 切换当前调试的线程为指定ID的线程。 break thread_test.c:123 thread all在所有线程中相应的行上设置断点thread apply ID1 ID2 command 让一个或者多个线程执行GDB命令command。 thread apply all command 让所有被调试线程执行GDB命令command。 set scheduler-locking off|on|step 估计是实际使用过多线程调试的人都可以发现,在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试 程序执行呢?通过这个命令就可以实现这个需求。off 不锁定任何线程,也就是所有线程都执行,这是默认值。 on 只有当前被调试程序会执行。 step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行。

2012年6月10日星期日

宏编译错误的解决

g++ -I../h -DENABLE_TRACE_LEVEL  -E ../h/CmTraceFromT120.h  > error

然后去error里去看看就知道了

2012年6月8日星期五

python导入出问题解决方案

没别的,路径问题,查看环境变量设置是否正确。

另外,通过这个命令查看路径

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

其实就是sys.exec_prefix

另外,
error: AccessInit: hash collision: 3 for both 1 and 1.
这个问题,也是PYTHONPATH设置的问题,
设置为如下“c:\python26\Lib"就可以。其他OS类似。