-----------------------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 存儲程序的方式:棧幀(局部變量/臨時值)