-----------------------vi

1.Ubuntu下安裝vi  sudo apt-get install vim

2.在/etc/vim  or  家目錄/.vimrc中可設置vi風格

 set tabstop=4 and set softtabstop=4 設置製錶符寬度為4

 set shifwidth=4                 設置縮進的空格數為4

 set autoindent  設置自動縮進

 set nu/set nonu  設置/取消左側的行號顯示

3.末行模式、命令模式、文本模式

 ①末行模式、命令模式、文本模式的切換

 末行模式->命令模式 Esc/」(回車)   命令模式->文本模式  iao/IAO

 文本模式->命令模式 Esc            命令模式->末行模式  :

 命令模式退出 shift+z+z            末行模式退出 :wq/x

 ②命令模式下的一些操作

   i 光標之前插入字符/I 行首插入字符      

   a 光標之後插入字符/A 行尾插入字符  

   o 光標所在處下行插入字符/O 光標所在處上行插入字符

   H 光標移動到屏幕上方     M 光標移動到屏幕中間     L 光標移動到屏幕下方  

   gg 光標移動到全文開始   G 光標移動到全文結束

   回車 光標所在當前行下行  

   h 光標向左移動/j 光標向下移動/k 光標向上移動/l  光標向左移動

   w 按小字移動光標         W 按大字移動光標        

   { 光標移至上一段開頭     } 光標移至上一段開頭    

    num G 一到num行         gg=G 全文縮進

   [[ 光標移至上一函數{處   ]] 光標移至下一函數}處  

   Ctrl+U 屏幕向前滾半屏     Ctrl+d 屏幕向後滾半屏  

   Ctrl+f 向文件尾翻滾一屏  Ctrl+b 向文件頭翻滾一屏  

   x 刪除光標所在處的字符   X 刪除光標前的字符      dd 刪除整行

   dw刪除一個小字           dW刪除一個大字           u 撤銷命令            r 重複命令              

   d0 刪除光標處到行首的字符 D 刪除光標處到行尾的字符

   sp filename 橫切窗口  vsp filename 縱切窗口   Ctrl+w+w 切換焦點

   一次性關閉所有窗口 :wqall [d 查看宏值

 ③末行模式下的一些操作

   :num 跳轉到指定行

   :%s/ab/AB/g 全文替換   :%5,10s/ab/AB/g 5到10行替換

   /num 從當前光標所在處向下查找     ?num 從當前光標所在處向上查找

   :r path 將指定文件追加到當前光標所在處

   :! cmd  在當前vi中執行其它命令

   :r ! cmd 將某個命令的執行結果導入到光標所在處

 ④從外部進入vi的幾種方式

   a.vi  直接進入,在保存文件時再給其命名

   b.vi filename  後跟文件名進入,之後保存退出

   c.vi filename +rownum  進入vi中指定行

   d.vi filename +funname 進入某一指定函數

-----------------gcc

4.gcc編譯過程

 預處理   gcc -E test.c -o test.i

   |

   ﹀

 編譯     gcc -S test.c -o test.s

   |

   ﹀                                               gcc test.c -o test

 彙編     gcc -c test.s -o test.o

   |

   ﹀

 鏈接     gcc test.o -o test

5.gcc first.c second.c third.c -o test  多文件連編

 gcc test.c -I ../temp -o test   用I來指定文件存在目錄(否則默認在當前目錄下)

 gcc test.c -o test -Wall 將警告顯示出來

 gcc test.c -o test -Wall -Werror 把warning當做error來處理

-------------------gdb

6.gdb調試的前提 gcc test.c -o test -g(gcc編譯時添加-g)

 f(file): f filename,指定一個文件進行調試

 l(list):l,列出源文件信息

 r(run):r,運行程序(可執行程序)

 b(break):b num,設置斷點          b num if i=3:條件斷點,當i=3時,進入斷點

 info b:查看已設置的斷點          disable num:設置斷點為無效    

 enable num:重新啟用斷點          delete num:刪除斷點

 c(continue):c,跳到下個斷點處

 p(print):p variable,輸出某個變量的值,只顯示一次  

 display: display variable,輸出某個變量的值,始終跟隨調試過程顯示

 n(next):n,單步執行             s(step):s,單步執行,可進入某一函數

 start:開始調試過程             return:返回函數調用處

 bt:查看棧幀                    frame num:切換到某一棧幀空間

 ptype:查看變量類型

 p *數組名@10   查看數值前十個元素

 p 數組名[5]@10 查看數組從下標5號開始的10個元素

 c 存儲程序的方式:棧幀(局部變量/臨時值)