1. Linux編譯器vim
1.1 vim的基本概念講解
vim有很多種模式,我們初學者常用的就是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。



?PS:不過有一點要特別注意,就是你進入vim之后,是處于[正常模式],你要切換到[插入模式]才能夠輸入文字。
在末行模式下我們輸入w就是保存,輸入q就是退出,輸入wq就是保存并退出,wq!就是強制保存并退出。
1.2 三模式之間的切換
我們一開始進入vim是命令模式,我們要切換成插入模式才可以編寫代碼。
以下就是三模式之間的切換的方式:
?1.3?vim正常模式常用命令
? 行間移動:
? h:向左移動一個字符 ;nh 向左移動n個字符。
? l:向右移動一個字符 ;nl 向右移動n個字符。
? j:向下移動一行 ;nj 向下移動n行。
? k:向上移動一行 ;nk 向上移動n行。
? 行內移動:
? 0:移動到行首。
? ^:移動到本行第一個非空白字符。
? $:移動到行尾。
? 單詞移動:
? w:移動到下一個單詞的開頭。
? e:移動到當前或下一個單詞的末尾。
? 文件內跳轉:
? gg:移動到文件開頭。
? G:移動到文件末尾。
? nG 或 :n :跳轉到第n行 。
? 翻頁移動:
? Ctrl + u:向上滾動半頁。
? Ctrl + d:向下滾動半頁。
? Ctrl + b:向上滾動一整頁。
? Ctrl + f:向下滾動一整頁。
? 刪除:
? x:刪除光標所在字符 ;#x(如6x )刪除光標后#個字符。
? X:刪除光標前一個字符 ;#X(如20X )刪除光標前#個字符。
? dd:刪除光標所在行 ;#dd(如3dd )從光標所在行開始刪除#行。
? d$ 或 D:刪除光標到行尾內容。
? dw:刪除光標到單詞末尾內容。
? 復制:
? yy:復制光標所在行 ;#yy(如6yy )復制光標所在行往下#行內容。
? y$:復制光標到行尾內容。
? yw:復制一個單詞。
? 粘貼:
? p:若復制內容為行,粘貼到當前行下方;若小于一行,粘貼到光標右側。
? P:若復制內容為行,粘貼到當前行上方;若小于一行,粘貼到光標左側。
? #p(如3p ):粘貼#次。
? 替換:
? r:替換光標所在字符,輸入新字符即可替換 ;#r(如2r )替換#個字符。
? R:進入連續替換模式,直到按Esc 鍵結束。
? 更改:
? cw:更改光標所在處的字到字尾處 ,刪除單詞并進入插入模式 ;#cw(如2cw )更改#個單詞。
? c$:更改從光標位置到行尾的內容,刪除并進入插入模式。
? 撤銷與恢復:
? u:撤銷上一步操作 ;#u(如5u )撤銷最近#次操作。
? Ctrl + r:恢復撤銷的操作。
? 重復操作:
? .:重復上一次操作 ;#.(如10. )重復上一次操作#次。
1.4 vim末行模式常用命令
? 跳轉到指定行:
:行號(如 :10,光標跳轉到第10行)。
? 跳轉到文件開頭:
:1(快速回到首行)。
? 跳轉到文件末尾:
:$(光標移至最后一行)。
? 查找:
? 正向查找:/關鍵字(如 /hello,從當前位置向后查找,按 n 下一個,N 上一個)。
? 反向查找:?關鍵字(如 ?world,從當前位置向前查找,按 n 下一個,N 上一個)。
? 替換:
? 行內替換:范圍s/舊內容/新內容/g(如 :1,20s/abc/def/g,將1-20行的“abc”替換為“def”)。
? 全局替換(帶確認)::%s/舊內容/新內容/gc(% 表示全文,c 逐個確認替換)。
? 保存文件:
? :w(保存當前修改)。
? :w 文件名(另存為新文件)。
? 退出VIM:
? :q(未修改或已保存時退出,否則報錯)。
? :q!(強制退出,不保存修改)。
? :wq 或 :x(保存并退出)。
? 顯示/隱藏行號:
:set nu(顯示); :set nonu(隱藏)。
? 開啟/關閉語法高亮:
:syntax on(開啟); :syntax off(關閉)。
? 高亮/取消搜索結果:
:set hlsearch(高亮); :set nohlsearch(取消)。
執行外部命令
:!命令(如 :!ls,不退出VIM執行Shell命令)。
2. g++與gcc
g++與gcc分別就是在Linux編譯器里面的C++與C語言。
下面就是我們使用C++寫的一個代碼,那么我們在編譯的時候就必須使用g++(我們寫的純C語言的代碼也可以用g++)。
?我們通過以下的方式就可以生成一份可執行文件(默認叫做a.out)。
?3. 動態庫與靜態庫
?我們要知道代碼對于計算機來說并不是像我們看到的那樣的,我們寫的代碼會經歷預處理(進行宏替換) ->編譯(生成匯編) ->匯編(生成機器可識別代碼)-> 鏈接(生成可執行文件或庫文件)。
而動態庫與靜態庫則是在鏈接階段被嵌入代碼中。
那么動態庫與靜態庫又有什么差別呢?我個人認為他們就好像自定義函數與內聯函數。
編譯器記錄下動態庫里面的一些信息,然后把源代碼里面包含這些信息的部分與動態庫進行連接,從而實現調用。
靜態庫則是在鏈接階段把自己的代碼拷貝到原代碼中。
4. 自動化構建工具makefile
makefile寫好之后,我們只需要一個輸入make和make clear就可以實現可執行文件的生成與銷毀。
以下就是makefile里面要寫的內容:
然后我們就可以生成可執行文件mytestvim。?
?最后我們可以通過make clean來對mytestvim進行銷毀:
?像clean這種,沒有被第一個目標文件直接或間接關聯,那么它后面所定義的命令將不會被自動執行,不過,我們可以顯示要make執行。即命令——“make clean”,以此來清除所有的目標文件,以便重編譯。 但是一般我們這種clean的目標文件,我們將它設置為偽目標,用 .PHONY 修飾,偽目標的特性是,總是被執行的。
PS:像clean這樣的偽目標我們可以設置多個。
5. git命令
首先我們要通過yum install git來安裝相關的git命令。
然后我們需要輸入git clone 【HTTPS】
點擊這個位置就可以進行查看HTTPS:?
這樣我們就把代碼倉庫復制到了本地,接著我們需要進入到自己的代碼倉庫里面并把需要上傳的代碼復制到倉庫,然后就git add [文件名]當然我們也可以git add . 就是吧使用沒有添加的全部添加進去。
如果出現這些字我們就需要復制紅線內部的內容然后輸入自己的郵箱和名字。?
然后輸入git commit -m "要取的名字"。
最后輸入git push,接著輸入自己賬號的手機號和密碼,接著我們如果看到以下的內容就代表成功了。
特別要注意一點,git是無法全局查找的,所以是一定要把代碼復制進本地里面的。
就是要放進下圖的這個路徑里面。