普通模式跳行
gg:回到文本的頭部
G(shift+g):回到文本的最後一行
[num]+G(shift+g):跳到任意行 gg=G
命令行模式下的操作
:set nu : 設置行號
:set nonu:取消行號
:vs [filename] 同時打開多個文件 ctrl +ww 切換不同的文件
xshell 也有分屏的功能
/[要搜索的字符串]--> 按 enter , n(next): 向下去搜索
?[要搜索的字符串] :向上去搜索
:%s/要替換誰/替換成啥/g(區分是否替換行內所有出現的需要替換的單詞),加上%表示替換全文,不加表示替換光標所在的當前行
vim
普通用戶的:用戶的家目錄下修改或者創建 .vimrc文件
系統的:/etc/vimrc
"inoremap<expr><CR> pumvisible()?"\<C-y>":"\<CR>"註釋掉
set tabstop=4
set softtabstop=4
set shiftwidth=4
gcc/g++
a.預處理階段
宏替換,文件展開,去註釋
gcc - E [源代碼文件] -o [name].i
b.編譯:
語法語義的檢測,並且生成彙編代碼
gcc -S [name].i -o [name].s
c.彙編:
把彙編代碼生成機器可識別指令
gcc -c [name].s -o [name].o
d.鏈接
靜態鏈接:-static 將所有的代碼包括標準庫的實現全部鏈接到可執行文件當中去;缺點:冗餘性大,編譯出來的文件特別大
動態鏈接:在可執行文件當中只保存所需要使用的函數的符號,符號表。優點:可執行文件小,並且各個模塊處於解耦狀態。代碼的複用性高。
file:查看文件屬性的
ldd:查看可執行文件的動態鏈接屬性
gdb 調試器
a.基礎 (事前)
在編譯命令後面加 -g 選項,生成一個debug版本的可執行程序
b(break): b[行號]:在“行號”這一行打一個斷點
b[filename]:[行號] 在filename 這個文件的“行號”這一行去打一個斷點
i b(info breakpoint):查看斷點信息
disable[斷點編號]:使當前編號的斷點失效
enable[斷點編號]:使當前編號的斷點生效
r(run):讓程序跑起來
n(next):逐過程的單步調試(F10)
s(step):逐語句的單步調試(F11)
p(print):打印變量的值
i locals:打印當前作用域中的臨時變量的值
c(continue):繼續執行
display [變量名稱]:跟蹤變量的值
bt:查看調用堆棧
where:查看調用堆棧
delete breakpoints [num]:刪除某個斷點
delete breakpoints :刪除所有的斷點
如果程序運行起來的時候 (事中)
ps aux | grep [可執行程序名稱]===>進程號
gdb -p [進程號] ==gdb attach [進程號]
如果進行奔潰了 (事後)
gdb 可執行程序 coredump 文件
bt p i locals
/r 是回車符