目錄
一. vim的基本概念
二. vim基礎操作?
2.1 插入模式?aio
2.2 [插入模式]切換至[正常模式]? Esc
2.3[正常模式]切換至[末行模式]? shift + ;
2.4?替換模式??Shift + R
2.5 視圖(可視)模式?(可以快速 刪除//注釋 或者 增加//注釋) ctrl + v
三:一些基礎指令操作:
3.1 移動光標
3.2刪除文字
3.3 復制
3.4 替換
3.5 更改
3.6 vim末行模式常用命令
3.7 雙屏幕 test.c 和 test.h 同時寫入小技巧
3.7.1 方法一? 使用垂直或水平分割
3.7.2方法2:使用標簽頁
3.7.3 方法3:使用窗口切換快捷鍵
四. gcc 和 g++
五. Makefile
六. gdb的一般操作
6.1開始調試(是對可執行文件的調試)
一. vim的基本概念
vim的三種模式(其實有好多模式,目前掌握這3種即可),分別是命令模式(command mode)、插入模式(Insert mode) 和 底行模式(last line mode),各模式的功能區分如下:
?
1.1?命令模式 (?正常 / 普通 模式):控制屏幕光標的移動,字符、字或行的刪除
1.2 插入模式 只有在插入模式下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。該模式是我們后面用的最頻繁的編輯模式。
1.3?末行模式? 文件保存或退出,也可以進行文件替換,找字符串,列出行號等操作。? 在命令模式下,“ shift + : ”即可進入該模式。要查看你的所有模式:打開vim,底行模式直接輸入:help vim-modes
二. vim基礎操作?
2.1 插入模式?aio
輸入a :光標會移動到當前字符的后面,并進入[插入模式]。
輸入i? :光標會停留在當前字符的前面,并進入[插入模式]。
輸入o? :會在當前行的下方插入一個新行,并進入[插入模式]。
2.2 [插入模式]切換至[正常模式]? Esc
目前處于[插入模式],可以按一下「ESC」鍵轉到 [正常模式] 。
2.3[正常模式]切換至[末行模式]? shift + ;
「shift+;」,其實就是輸入「:」,就可以進入末行模式。
w(保存當前文件)
wq(輸入「wq」,存盤并退出vim)
q!(輸入q!,不存盤強制退出vim)
2.4?替換模式??Shift + R
按下Shift + R
(即?R
)?進入替換模式,在此模式下,你輸入的每個字符都會替換光標處的字符,按?Esc
?退出替換模式。
2.5 視圖(可視)模式?(可以快速 刪除//注釋 或者 增加//注釋) ctrl + v
刪除操作:(例子是刪除// 注釋):
1.按下Ctrl +v 進入塊選擇模式。
2.用 j(向下) 或? k (向上) 或 h(左)或 L(右)移動光標,選中所有行的/部分(甚至包括后面的注釋內容)。
3.按下?d
?或?x
?直接刪除選中的塊區域。
插入操作(例子是加入// 注釋):
1. 進入塊選擇模式:按下?Ctrl + v
。
2. 選擇行范圍:按?j
(向下)或?k
(向上)選擇要注釋的多行。
3. 如果注釋需要對齊,可以按?l
(向右)選中多列(例如選中行首的空白區域)。
4. 插入注釋符號:按?Shift + i
(大寫?I
)進入插入模式。
5 .輸入?//
(或?//?
帶空格)。
6. 按?Esc
?退出插入模式,所有選中行的行首會自動添加?//
。
三:一些基礎指令操作:
3.1 移動光標
vim可以直接用鍵盤上的光標來上下左右移動,但正規的vim是用小寫英文字母「h」、「j」、
「k」、「L」,分別控制光標左、下、上、右移一格
按「G」:移動到文章的最后
按「」:移動到光標所在行的“行尾”
按「^」:移動到光標所在行的“行首”
按「w」:光標跳到下個字的開頭
按「e」:光標跳到下個字的字尾
按「b」:光標回到上個字的開頭
按「#」:光標移到該行的第#個位置,如:5l,56l
按[gg]:進入到文本開始
按[shift+g]:進入文本末端
按「ctrl」+「b」:屏幕往“后”移動一頁
按「ctr」+「f」:屏幕往“前”移動一頁
按「ctr」+「u」:屏幕往“后”移動半頁
按「ctrl」+「d」:屏幕往“前”移動半頁
3.2刪除文字
「x」:每按一次,刪除光標所在位置的一個字符
「#x」:例如,「6x」表示刪除光標所在位置的“后面(包含自己在內)”6個字符
「X」:大寫的X,每按一次,刪除光標所在位置的“前面”一個字符
「#X」:例如,「20X」表示刪除光標所在位置的“前面”20個字符
「dd」:刪除光標所在行
「#dd」:從光標所在行開始刪除#行
3.3 復制
「yw」:將光標所在之處到字尾的字符復制到緩沖區中。
「#yw」:復制#個字到緩沖區
「yy」:復制光標所在行到緩沖區。
「#yy」:例如,「6yy」表示拷貝從光標所在的該行“往下數”6行文字。
「p」:將緩沖區內的字符貼到光標所在位置。注意:所有與“有關的復制命令都必須
與“p”配合才能完成復制與粘貼功能。
3.4 替換
「r」:替換光標所在處的字符。
「R」:替換光標所到之處的字符,直到按下「ESC」鍵為止。
撤銷上一次操作:
「u」:如果您誤執行一個命令,可以馬上按下」,回到上一個操作。按多次“u”可以執行
多次回復。
「ctrl+ r」:撤銷的恢復
3.5 更改
「cw」:更改光標所在處的字到字尾處
「c#w」:例如,「c3w」表示更改3個字
跳至指定的行:
「ctrl」+「g」列出光標所在行的行號。
「#G」:例如,「15G」,表示移動光標至文章的第15行行首。
3.6 vim末行模式常用命令
「shift + :」冒號即可進入末行模式。
列出行號:「set nu」:輸入「set nu」后,會在文件中的每一行前面列出行號。
跳到文件中的某一行:「#」:「#」號表示一個數字,在冒號后輸入一個數字,再按回車鍵就會跳到該行了,如輸入數字#15,就會跳到的第15行。
3.7 雙屏幕 test.c 和 test.h 同時寫入小技巧
3.7.1 方法一? 使用垂直或水平分割
3.7.2方法2:使用標簽頁
3.7.3 方法3:使用窗口切換快捷鍵
四. gcc 和 g++
gcc編譯選項
格式:gcс? [選項]? 要編譯的文件? [選項]? [目標文件]?
比如:
預處理:
編譯:
匯編:
連接:
ESc 后綴 對應文件 iso?后綴
五. Makefile
首先我們需要touch 一個Makefile
下面是Makefile 的例子:
make 就可以運行程序,比如:
像clean這種,沒有被第一個目標文件直接或間接關聯,那么它后面所定義的命令將不會被自動執行(也就是make),不過,我們可以顯示要make執行。即命令—“make clean”,以此來清除所有的目標文件,以便重編譯。
.PHONY 解釋:一般我們這種clean的目標文件,我們將它設置為偽目標,用 .PHONY 修飾,偽目標的特性是,總是能被執行的。
六. gdb的一般操作
首先我們最好安裝cgdb
? 推薦安裝cgdb:
? Ubuntu:? sudo apt-get install -y cgdb?
? Centos:? sudo yum? install -y cgdb?
程序的發布方式有兩種,debug模式和release模式,Linux gcc/g++ 出來的二進制程序,默認是release模式。
要使用gdb調試,必須在源代碼生成二進制程序的時候,加上一g選項,如果沒有添加,程序無法被編譯
比如下面的debug的文件:
6.1開始調試(是對可執行文件的調試)
比如:
命令列表 重要的用紅色圈起來(可以自己去嘗試,我就不試了):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
命令? | ?作用? ? | 樣例 |
list/l | ? 顯示源代碼,從上次位置開始,每次列出10行? | list/l 10 |
list/l 函數名 | 列出指定函數的源代碼 | l main |
list/l 文件名:行號 | 列出指定文件的源代碼 | list/l test.c:1 |
r/run | 從程序開始連續執行 | r |
n/next | 單步執行,不進入函數內部 | n |
s/step | 單步執行,進入函數內部 | step |
break/b 行號(類似list的用法) | 在指定行號設置斷點 | b 10 break test.c:10 |
b 函數名 | 在函數開頭設置斷點 | b main |
info b/break | 查看當前所有斷點的信息 | info b |
finish | 執行到當前函數返回,然后停止 | finish |
set var? | 修改變量的值 | set var i=10 |
continue/c | 從當前位置開始連續執行程序 | continue |
delete breakpoints | 刪除所有斷點 | delete breakpoints |
d n | 刪除序號為n的斷點 | d 1 |
disable breakpoints | 禁用所有斷點 | disable breakpoints |
enable breakpoints | 啟用所有斷點 | enable breakpoints |
display 變量 | 跟蹤顯示指定變量的值(每次停止時) | display x |
undisplay?變量 | 取消對指定編號的變量的跟蹤顯示 | undisplay x |
backtrace/bt | 查看當前執行棧的各級函數調用及參數 | bt |
info/i locals | 查看當前棧幀的局部變量值 | info/i locals |
until 行號 | 執行到指定行號 | until 20 |
quit/q | 退出GDB調試器 | q |
?提示:假如我們不小心按到 Esc到 末行模式 ,按 i 可以繼續輸入指令。