2007.12.29
ÔÚ¹¤×÷ѧϰÖУ¬ÎÒÃǾ³£»áÓöµ½±È½ÏÁ½¸öprojectµÄÎÊÌ⣬ÀýÈ磬ÎÒÃÇÏë²é¿´FreeBSD 6.0ºÍ6.2¾¿¾¹Óкβ»Í¬¡£
ÕâÀïÎÒÃÇÌṩÁ½ÖÖ·½·¨£¬¿ÉÒÔ·½±ãµÄʵÏÖ¡£
1 Ŀ¼Ê÷ÏàͬµÄÇé¿ö
6.0ºÍ6.2µÄÔ´ÂëÍùÍù¾ßÓÐÏàͬµÄĿ¼Ê÷½á¹¹£¬ÀýÈ磬¶¼´æÔÚÎļþ
sys/i386/i386/machdep.c£¬ÇÒÆäÖж¼Óк¯Êýinit386
Õâʱ£¬Èç¹ûÎÒÃÇÏë±È½Ïº¯Êýinit386µÄ²»Í¬Ö®´¦£¬¾Í¿ÉÒÔÖ±½Ó±È½ÏÕâÁ½¸öÎļþµÄ²»Í¬Ö®´¦¡£
ÎÒÃÇҪʵÏֵij¡¾°ÊÇÕâÑùµÄ£º
Ê×ÏÈ£¬ä¯ÀÀ6.2£¨»òÕß6.0£©µÄÔ´ÂëÖеĺ¯Êýinit386£»Õâʱ£¬ÎÒÃÇͻȻÏë¿´¿´Óë6.0µÄÓÐʲô²»Í¬£¬ÎÒÃÇÏȺó°´ÏÂ
,d(¶ººÅºÍ×Öĸd)£¬È»ºóvim¾ÍÒÔÊúÖ±´°¿ÚdiffµÄ·½Ê½¶Ô±ÈÏÖʵÁ½¸öº¯ÊýµÄ²»Í¬¡£
¼ÙÉè6.2ºÍ6.0µÄÔ´Âë·Ö±ðλÓÚĿ¼£º/usr/src/6.2/, /usr/src/6.0/
°ÑÈçÏ´úÂë¼ÓÈëÄúµÄ~/.vimrcÖУº
function Diff()
let s:file_name=expand("%:p")
let s:slash_count = match(s:file_name, "/", 3)
let s:slash_count = match(s:file_name, "/", s:slash_count + 1)
let s:slash_count = match(s:file_name, "/", s:slash_count + 1)
let s:file_name=strpart(s:file_name, s:slash_count +1)
let s:file_name="/usr/src/6.0/".s:file_name
execute ":vertical diffsplit ".s:file_name
endfunction
nmap ,d :call Diff()
map
map
ÎÒÃÇÀ´ÖðÐнâÊÍһϣº
function Diff() "ÉùÃ÷º¯Êý£¬º¯ÊýÃûÊ××Öĸ±ØÐë´óЩ
let s:file_name=expand("%:p") "µÃµ½µ±Ç°µÄÎļþ·¾¶(Èç/usr/src/6.2/sys/i386/i386/machdep.c)
let s:slash_count = match(s:file_name, "/", 3) "´ÓµÚ3¸ö×Ö·û¿ªÊ¼Æ¥Åä"/"£¬·µ»ØµÚ2¸ö"/"ËùÔÚµÄλÖÃ
let s:slash_count = match(s:file_name, "/", s:slash_count + 1) "·µ»ØµÚ3¸ö"/"ËùÔÚµÄλÖÃ
let s:slash_count = match(s:file_name, "/", s:slash_count + 1) "·µ»ØµÚ4¸ö"/"ËùÔÚµÄλÖÃ
let s:file_name=strpart(s:file_name, s:slash_count +1) "²ð·Ö·¾¶£¬µÃµ½sys/i386/i386/machdep.c
let s:file_name="/usr/src/6.0/".s:file_name "Éú³Éеķ¾¶/usr/src/6.0/sys/i386/i386/machdep.c
execute ":vertical diffsplit ".s:file_name "ÒÔÊúÖ±´°¿ÚdiffµÄ·½Ê½´ò¿ªÐµÄ·¾¶Îļþ
endfunction
nmap ,d :call Diff()
map
map
2 Ŀ¼Ê÷²»Í¬µÄÇé¿ö
Èç¹ûÁ½¸öprojectµÄÎļþ½á¹¹²îÒì½Ï´ó£¬¾Í²»ÄÜʹÓõÚ1ÖÖ·½·¨ÁË¡£
ÎÒÃÇÈÔÈ»ÏëʹÓÃ×óÓÒÁ½¸ö´°¿ÚÀ´ä¯ÀÀ´úÂ룬µ«ÊÇÏëʹÎÒÃÇÔÚ´°¿Ú¼äÇл»Ê±£¬ÏàÓ¦µÄtagsÒ²ÄÜÇл»¡£
²½ÖèÈçÏÂ(ÎÒÃÇÈÔÒÔ6.2ºÍ6.0µÄÔ´ÂëΪÀý)£º
1 ½¨Á¢tagsĿ¼
mkdir /tmp/tags
cd /tmp/tags
2 cscope -Rb -s /usr/src/6.2/
3 mv cscope.out 62.out
4 cscope -Rb -s /usr/src/6.0/
5 mv cscope.out 60.out
°ÑÈçÏ´úÂë¼ÓÈëÄúµÄ~/.vimrcÖУº
map
map
6 ʹÓÃ
vim /usr/src/6.2/sys/i386/i386/machdep.c
:cs add /tmp/tags/62.out
:vsplit /usr/src/6.0/sys/i386/i386/machdep.c
ÕâÑùʹÓÃCtrl+h/l¾ÍÄÜͬʱÇл»´°¿ÚºÍtagsÁË¡£