第二周学习过程总结
1.重點知識點梳理:
? ? ? ? ? GCC編譯的四個步驟:預處理(gcc -E)、編譯(gcc -S)、匯編(gcc -c)、鏈接
? ? ? ? ? 靜態鏈接庫的生成:ar rcsv libxxx.a xxx.o ?
? ? ? ? ? 共享庫的生成 gcc -fPIC -c xxx.c
快速記憶
Vim:
Vim具有6種基本模式和5種派生模式,我們這里只簡單介紹下6種基本模式:
- 普通模式(Normal mode)
- 插入模式(Insert mode)
- 可視模式(Visual mode)
- 選擇模式(Select mode)
- 命令行模式(Command line mode)
- Ex模式(Ex mode)
三種常用模式的切換:
vim啟動進入普通模式,處于插入模式或命令行模式時只需要按Esc或者Ctrl+[(這在vim課程環境中不管用)即可進入普通模式。普通模式中按i(插入)或a(附加)鍵都可以進入插入模式,普通模式中按:進入命令行模式。命令行模式中輸入wq回車后保存并退出vim。
幾個快捷鍵:
- 大寫“K”可以用來查找函數的幫助信息:查看?man?page,命令模式下,將光標放在函數名上,按"K"可以直接察看?man?page。
- 幾個設置
:set?nu?顯示行號
:set?ai?自動縮行
:set?ts=4?設置一個?TAB?鍵等于幾個空格
- 移動光標
[[?轉到上一個位于第一列的"{"
]]?轉到下一個位于第一列的"{"
{?轉到上一個空行
}?轉到下一個空行
gd?轉到當前光標所指的局部變量的定義。
進入vim:
(1)使用vim命令進入vim:
vim后面加上你要打開的已存在的文件名或者不存在(則作為新建文件)的文件名。 打開Xfce終端,輸入以下命令
$ vim practice_1.txt直接使用vim也可以打開vim編輯器,但是不會打開任何文件。
$ vim進入命令行模式后輸入:e 文件路徑?同樣可以打開相應文件。
(2)游標移動
在進入vim后,按下i鍵進入插入模式。在該模式下您可以輸入文本信息,下面請輸入如下三行信息:
12345678 abcdefghijk shiyanlou.com按Esc進入普通模式,在該模式下使用方向鍵或者h,j,k,l鍵可以移動游標。
| h | 左 |
| l | 右(小寫L) |
| j | 下 |
| k | 上 |
| w | 移動到下一個單詞 |
| b | 移動到上一個單詞 |
請嘗試在普通模式下使用方向鍵移動光標到shiyanlou這幾個字母上面。
(3)插入模式
在普通模式下使用下面的鍵將進入插入模式,并可以從相應的位置開始輸入
| i | 在當前光標處進行編輯 |
| I | 在行首插入 |
| A | 在行末插入 |
| a | 在光標后插入編輯 |
| o | 在當前行后插入一個新行 |
| O | 在當前行前插入一個新行 |
| cw | 替換從光標所在位置后到一個單詞結尾的字符 |
請嘗試不同的從普通模式進入插入模式的方法,在最后一行shiyanlou前面加上www.,注意每次要先回到普通模式才能切換成以不同的方式進入插入模式
(4)保存文檔
從普通模式輸入:進入命令行模式,輸入w回車,保存文檔。輸入:w 文件名可以將文檔另存為其他文件名或存到其它路徑下。
(5)退出
從普通模式輸入:進入命令行模式,輸入wq回車,保存并退出編輯
以下為其它幾種退出方式:
| :q! | 強制退出,不保存 |
| :q | 退出 |
| :wq! | 強制保存并退出 |
| :w <文件路徑> | 另存為 |
| :saveas 文件路徑 | 另存為 |
| :x | 保存并退出 |
| :wq | 保存并退出 |
?
普通模式下輸入Shift+zz即可保存退出vim
(6)刪除
進入普通模式,使用下列命令可以進行文本快速刪除:
| x | 刪除游標所在的字符 |
| X | 刪除游標所在前一個字符 |
| Delete | 同x |
| dd | 刪除整行 |
| dw | 刪除一個單詞(不適用中文) |
| d$或D | 刪除至行尾 |
| d^ | 刪除至行首 |
| dG | 刪除到文檔結尾處 |
| d1G | 刪至文檔首部 |
除此之外,你還可以在命令之前加上數字,表示一次刪除多行,如:
2dd表示一次刪除2。
gcc
我們可以把編譯過程分成四步:
- 預處理:gcc?–E?hello.c?–o?hello.i;gcc?–E調用cpp
- 編?譯:gcc?–S?hello.i?–o?hello.s;gcc?–S調用ccl
- 匯?編:gcc?–c?hello.s?–o?hello.o;gcc?-c?調用as
- 鏈?接:gcc?hello.o?–o?hello?;gcc?-o?調用ld
gdb
GDB最基本的命令有:
- gdb?programm(啟動GDB)
- b?設斷點(要會設4種斷點:行斷點、函數斷點、條件斷點、臨時斷點)
- run?開始運行程序
- bt?打印函數調用堆棧
- p?查看變量值
- c?從當前斷點繼續運行到下一個斷點
- n?單步運行
- s?單步運行
- quit?退出GDB
調試命令:
- display?跟蹤變量值的改變
- until?跳出循環
- finish?跳出函數
- help?幫助
?
2.詳細介紹
vim重復命令
重復執行上次命令
在普通模式下.(小數點)表示重復上一次的命令操作
拷貝測試文件到本地目錄
$ cp /etc/protocols .打開文件進行編輯
$ vim protocols普通模式下輸入x,刪除第一個字符,輸入.(小數點)會再次刪除一個字符,除此之外也可以重復dd的刪除操作
執行指定次數相同的命令
進入普通模式輸入N<command>,N表示重復后面的次數,下面來練習以下:
在普通模式下,你還可以使用dw或者daw(delete a word)刪除一個單詞,所以你可以很容易的聯想到dnw(n替換為相應數字)表示刪除n個單詞
游標的快速跳轉
普通模式下,下列命令可以讓光標快速調轉到指定位置,我們分別討論快速實現行間跳轉和行內跳轉
行間跳轉
| nG(n Shift+g) | 游標移動到第 n 行(如果默認沒有顯示行號,請先進入命令模式,輸入:set nu以顯示行號) |
| gg | 游標移動到到第一行 |
| G(Shift+g) | 到最后一行 |
?
小技巧:你在完成依次跳轉后,可以使用Ctrl+o快速回到上一次(跳轉前)光標所在位置,這個技巧很實用,比如當你在寫代碼時,忽然想起有個bug,需要修改,這時候你跳過去改好了,只需要按下Ctrl+o就可以回到你之前的位置。vim中會用很多類似的小技巧就等著你去發掘。
行內跳轉
普通模式下使用下列命令在行內按照單詞為單位進行跳轉
| w | 到下一個單詞的開頭 |
| e | 到下一個單詞的結尾 |
| b | 到前一個單詞的開頭 |
| ge | 到前一個單詞的結尾 |
| 0或^ | 到行頭 |
| $ | 到行尾 |
| f<字母> | 向后搜索<字母>并跳轉到第一個匹配的位置(非常實用) |
| F<字母> | 向前搜索<字母>并跳轉到第一個匹配的位置 |
| t<字母> | 向后搜索<字母>并跳轉到第一個匹配位置之前的一個字母(不常用) |
| T<字母> | 向前搜索<字母>并跳轉到第一個匹配位置之后的一個字母(不常用) |
依次進行如下操作練習:
- 在普通模式下,任意跳轉到一行,使用w跳轉到一個單詞的開頭,然后使用dw刪除這個單詞
- 在普通模式下,使用e跳轉到一個單詞的結尾,并使用~將游標所在字母變成大寫或小寫
復制粘貼和剪切
復制及粘貼文本
-
普通模式中使用y復制
- 普通模式中,yy復制游標所在的整行(3yy表示復制3行)
- 普通模式中,y^?復制至行首,或y0。不含光標所在處字符。
- 普通模式中,y$?復制至行尾。含光所在處字符。
- 普通模式中,yw?復制一個單詞。
- 普通模式中,y2w?復制兩個單詞。
- 普通模式中,yG?復制至文本末。
- 普通模式中,y1G?復制至文本開頭。
-
普通模式中使用p粘貼
- 普通模式中,p(小寫)代表粘貼至光標后(下)
- 普通模式中,P(大寫)代表粘貼至光標前(上)
打開文件進入普通模式練習上述命令,這會兒你就可以隨意yy了,一 一+
$ vim protocols剪切及粘貼
其實前面講得dd刪除命令就是剪切,你每次dd刪除文檔內容后,便可以使用p來粘貼,也這一點可以讓我們實現一個很爽快的功能——交換上下行:
ddp,就這么簡單,即實現了快速交換光標所在行與它下面的行
?
實驗心得:熟悉掌握相關命令。在普通模式下.(小數點)表示重復上一次的命令操作。例如:普通模式下輸入 x,刪除第一個字符,輸入.(小數點)會再次刪除一個字符,除此之外也可以重復 dd 的刪除操作。nG(n Shift+g) gg G(Shift+g)Ctrl+o,若有bug需要修改,只需要按下 Ctrl+o 就可以回到之前的位置。
字符的替換及撤銷(Undo操作)
替換和撤銷(Undo)命令
替換和Undo命令都是針對普通模式下的操作
| r+<待替換字母> | 將游標所在字母替換為指定字母 |
| R | 連續替換,直到按下Esc |
| cc | 替換整行,即刪除游標所在行,并進入插入模式 |
| cw | 替換一個單詞,即刪除一個單詞,并進入插入模式 |
| C(大寫) | 替換游標以后至行末 |
| ~ | 反轉游標所在字母大小寫 |
| u{n} | 撤銷一次或n次操作 |
| U(大寫) | 撤銷當前行的所有修改 |
| Ctrl+r | redo,即撤銷undo的操作 |
打開文件進行編輯:
$ vim practice_2 # 輸入以下文本 www.shiyanlou.com然后依次進行如下操作
- 輸入11G,跳轉到11行
- 輸入fa跳轉到第一個a字符
- 輸入r,并且輸入b,a字符被b字符替換(實用)
- 輸入R替換字符,輸入新字符串,輸入完按ESC回到普通模式(實用)
- 輸入cc替換整行字符,輸入新字符串,輸入完按ESC回到普通模式
- 輸入cw?替換一個英文字(word),輸入完按ESC回到普通模式(實用)
- 輸入~,翻轉游標所在字符的大小寫
- 輸入C?替換至行尾,即游標所在處以后的字都會被替換,輸入完按ESC回到普通模式
- 輸入u?撤銷上一次的操作
快速縮進
使用命令進行快速調整縮進操作
這一小節學習如何在vim中進行快速縮進,縮進操作均在普通模式下有效
打開文件進行編輯
$ vim protocols- 普通模式下輸入15G,跳轉到15行
- 普通模式下輸入>>?整行將向右縮進(使用,用于格式化代碼超爽)
- 普通模式下輸入<<?整行向左回退
- 普通模式下輸入:進入命令行模式下對shiftwidth值進行設置可以控制縮進和回退的字符數
shiftwidth命令
shiftwidth命令是指上一節>>命令產生的縮進(可以簡寫成sw) 普通模式下輸入:進入命令行模式下對shiftwidth值進行設置可以控制縮進和回退的字符數 獲取目前的設定值
:set shiftwidth?設置縮進為10個字符
:set shiftwidth=10輸入ESC回到普通模式,再次嘗試>>看縮進量是否變化
調整文本位置
命令行模式下輸入:ce(center)命令使本行內容居中
:ce命令行模式下輸入:ri(right)命令使本行文本靠右
:ri命令行模式下輸入:le(left)命令使本行內容靠左
:le查找
快速查找
普通模式下輸入/然后鍵入需要查找的字符串 按回車后就會進行查找。??與/功能相同,只不過?是向上而/是向下查找。 進入查找之后,輸入n和N可以繼續查找?n表示繼續查找,N反向查找
高級查找
- 普通模式下輸入\*尋找游標所在處的單詞
- 普通模式下輸入\#同上,但?\*?是向前(上)找,#則是向后(下)找
- 普通模式下輸入g\*同\*?,但部分符合該單詞即可
- 普通模式下輸入g\#同\#?,但部分符合該單詞即可
以上查找n,N?的繼續查找命令依然可以用。
實驗心得:學習執行指定次數相同的命令,替換和 Undo 命令都是針對普通模式下的操作
命令 r+<待替換字母> R cc 說明 將游標所在字母替換為指定字母 連續替換,直到按下 Esc 替換整行,即刪除游標所在行,并進入插入模式。
多文件編輯
使用vim編輯多個文件
編輯多個文件有兩種形式,一種是在進入vim前使用的參數就是多個文件。另一種就是進入vim后再編輯其他的文件。 同時創建兩個新文件并編輯
$ vim 1.txt 2.txt默認進入1.txt文件的編輯界面
- 命令行模式下輸入:n編輯2.txt文件,可以加!即:n!強制切換,之前一個文件的輸入沒有保存,僅僅切換到另一個文件
- 命令行模式下輸入:N編輯1.txt文件,可以加!即:N!強制切換,之前文件內的輸入沒有保存,僅僅是切換到另一個文件
進入vim后打開新文件
- 命令行模式下輸入:e 3.txt?打開新文件3.txt
- 命令行模式下輸入:e#?回到前一個文件
- 命令行模式下輸入:ls可以列出以前編輯過的文檔
- 命令行模式下輸入:b 2.txt(或者編號)可以直接進入文件2.txt編輯
- 命令行模式下輸入:bd 2.txt(或者編號)可以刪除以前編輯過的列表中的文件項目
- 命令行模式下輸入:e! 4.txt,新打開文件4.txt,放棄正在編輯的文件
- 命令行模式下輸入:f?顯示正在編輯的文件名
- 命令行模式下輸入:f new.txt,改變正在編輯的文件名字為new.txt
恢復文件
如果因為斷電等原因造成文檔沒有保存,可以采用恢復方式,vim -r進入文檔后,輸入:ewcover 1.txt來恢復
$ vim -r 1.txt可視模式
可視模式命令簡介
- 在普通模式下輸入v(小寫),進入字符選擇模式,就可以移動光標,光標走過的地方就會選取。再次按下v會后就會取消選取。
- 在普通模式下輸入Shift+v(小寫),進入行選擇模式,按下V之后就會把整行選取,您可以上下移動光標選更多的行,同樣,再按一次Shift+v就可以取消選取。
- 在普通模式下輸入?Ctrl+v(小寫),這是區域選擇模式,可以進行矩形區域選擇,再按一次Ctrl+v取消選取。
- 在普通模式下輸入d刪除選取區域內容
- 在普通模式下輸入y復制選取區域內容
視窗操作
視窗操作簡介
vim可以在一個界面里打開多個窗口進行編輯,這些編輯窗口稱為vim的視窗。 打開方法有很多種,例如可以使用在命令行模式下輸入:new?打開一個新的vim視窗,并進入視窗編輯一個新文件(普通模式下輸入Ctrl+w也可以,但是Ctrl+w在chrome下會與chrome關閉標簽頁的快捷鍵沖突,所以使用該快捷鍵你可以在IE或其它瀏覽器進行練習),除了:new命令,下述列舉的多種方法也可以在命令模式或普通模式下打開新的視窗:
- 命令行模式下輸入:sp 1.txt?打開新的橫向視窗來編輯1.txt
- 命令行模式下輸入:vsp 2.txt?打開新的縱向視窗來編輯1.txt
- 普通模式下Ctrl-w s?將當前窗口分割成兩個水平的窗口
- 普通模式下Ctrl-w v?將當前窗口分割成兩個垂直的窗口
- 普通模式下Ctrl-w q?即 :q 結束分割出來的視窗。如果在新視窗中有輸入需要使用強制符!即:q!
- 普通模式下Ctrl-w o?打開一個視窗并且隱藏之前的所有視窗
- 普通模式下Ctrl-w j?移至下面視窗
- 普通模式下Ctrl-w k?移至上面視窗
- 普通模式下Ctrl-w h?移至左邊視窗
- 普通模式下Ctrl-w l?移至右邊視窗
- 普通模式下Ctrl-w J?將當前視窗移至下面
- 普通模式下Ctrl-w K?將當前視窗移至上面
- 普通模式下Ctrl-w H?將當前視窗移至左邊
- 普通模式下Ctrl-w L?將當前視窗移至右邊
- 普通模式下Ctrl-w -?減小視窗的高度
- 普通模式下Ctrl-w +?增加視窗的高度
視窗操作練習
- 命令行模式下輸入:new?打開一個新的vim視窗
- 命令行模式下輸入:sp 2.txt?打開新的橫向視窗來編輯2.txt
- 命令行模式下輸入:vsp 3.txt?打開新的橫向視窗來編輯3.txt
- 如果使用非chrome瀏覽器可以使用Ctrl+w進行視窗間的跳轉
- 分別在不同視窗的命令行模式下輸入:q!退出多視窗編輯
文檔加密
創建加密文檔
$ vim -x file1輸入您的密碼 確認密碼 這樣在下一次打開時,vim就會要求你輸入密碼
在vim執行外部命令
在命令行模式中輸入!可以執行外部的shell命令
- :!ls?用于顯示當前目錄的內容
- :!rm FILENAME用于刪除名為 FILENAME 的文件
- :w FILENAME可將當前 VIM 中正在編輯的文件另存為 FILENAME 文件
幫助系統
vim中的查看幫助
- 普通模式下按F1打開vim自己預設的幫助文檔
- 命令行模式下輸入:h shiftwidth?打開名為shiftwidth的幫助文件
- 命令行模式下輸入:ver?顯示版本及參數
功能設定
vim的功能設定
可以在編輯文件的時候進行功能設定,如命令行模式下輸入:set nu(顯示行數),設定值退出vim后不會保存。要永久保存配置需要修改vim配置文件。 vim的配置文件~/.vimrc,可以打開文件進行修改,不過務必小心不要影響vim正常使用
獲取目前的設定
- 命令行模式下輸入:set或者:se顯示所有修改過的配置
- 命令行模式下輸入:set all?顯示所有的設定值
- 命令行模式下輸入:set option??顯示option的設定值
- 命令行模式下輸入:set nooption?取消當期設定值
set功能的說明
- 命令行模式下輸入:set autoindent(ai)?設置自動縮進
- 命令行模式下輸入:set autowrite(aw)?設置自動存檔,默認未打開
- 命令行模式下輸入:set background=dark或light,設置背景風格
- 命令行模式下輸入:set backup(bk)?設置自動備份,默認未打開
- 命令行模式下輸入: set cindent(cin)?設置C語言風格縮進
3.問題及解答
1.在使用“x”刪除光標所在位置的字符時,錯刪了字符,不會撤回。
使用u鍵可以撤銷。
2. 問題:GDB的n(next)命令讓GDB執行下一行,然后暫停。 s(step)命令的作用與此類似,只是在函數調用時step命令會進入函數,那么實際使用中應該優先選用哪個?為什么?
next是單步跟蹤程序,當遇到函數調用時,也不進入此函數體;而step遇到用戶自定義的函數,將步進到函數中去運行,而 next 則直接調用函數,不會進入到函數體內。
Step命令,如果step命令將要運行的源代碼行上有函數調用,那么step命令將導致GDB進入到被調用函數的內部。
3.有些成對的命令無法清楚記憶,導致浪費大量時間,如f與F,?與/
多次記憶,重復練習
?
轉載于:https://www.cnblogs.com/20135302wei/p/4842480.html
總結
- 上一篇: 兴业银行股票为啥跌 具体原因解析
- 下一篇: HDU 5489 Removed In