1、vim基本概念
vim編輯器主要有三種操作模式:命令模式、插入模式和底行模式。
- 命令模式:在該模式下,所有的鍵盤輸入都被視為命令,用于控制光標移動、刪除字符、字或行等操作。按i鍵進入插入模式,按:鍵進入底行模式。
- 插入模式:在此模式下,所有的鍵盤輸入都會被視為文本輸入。按esc鍵可以切換回命令模式。
- 底行模式:用于文件的保存或退出、替換文本、查找字符串、顯示行號等操作。同樣,按esc鍵可以返回命令模式。
vim總共有12種模式,包括6種基本模式和6種附加模式。輸入help vim-modes可以查看所有模式。
2、vim操作
(1) 命令模式
進入vim時,默認處于命令模式。以下是一些常用命令:
命令 | 作用 |
---|---|
gg | 光標移動到文章開頭 |
G | 光標移動到文章末尾 |
num+G | 光標移動到第num行行首 |
$ | 光標移動到當前行末尾 |
^ | 光標移動到當前行開頭 |
w,b | 光標按單詞移動,跨行 |
h,j,k,l | 光標左移、下移、上移、右移 |
(num)yy | 復(fù)制光標所在行或num行 |
(num)dd | 剪切或刪除光標所在行或num行 |
(num)p | 粘貼到光標所在行下方num次 |
u | 撤銷上一步操作 |
ctrl+r | 重做上一步撤銷的操作 |
~ | 轉(zhuǎn)換光標所在字符的大小寫 |
(num)r | 替換光標所在字符或之后的num個字符 |
R | 進入替換模式,類似于第四種模式 |
(num)x | 刪除光標所在字符或之后的num個字符 |
(2) 插入模式
進入插入模式后,可以直接編輯文本,輸入的字符會顯示在文本中。
(3) 底行模式
以下是底行模式的常用命令:
命令 | 作用 |
---|---|
set nu | 顯示文件每一行的行號 |
(num) | 直接跳轉(zhuǎn)到第num行 |
/+字符 | 向前查找字符,按n繼續(xù)查找 |
?+字符 | 向后查找字符,按n繼續(xù)查找 |
w | 保存文件 |
q | 退出文件 |
q! | 強制退出文件 |
wq | 保存并退出文件 |
wq! | 強制保存并退出文件 |
3、vim配置
未經(jīng)配置的vim不適合編寫代碼,因為它原本只是一個文本編輯器。配置vim可以優(yōu)化編程環(huán)境。文本文件建議使用nano編輯,而代碼則使用vim。
vim的配置文件是隱藏文件.vimrc。
推薦使用一鍵配置vim,避免手動配置的麻煩。在Linux下輸入以下命令并輸入root密碼即可完成配置,配置完成后重啟shell。
二、編譯工具–gcc/g++編譯器
1、程序翻譯過程
C程序的翻譯過程包括預(yù)處理、編譯、匯編和鏈接四個階段。
- 預(yù)處理:進行宏替換,生成.i文件。
- 編譯:檢查代碼規(guī)范性和語法錯誤,生成.s文件。
- 匯編:生成機器可識別的代碼,生成.o文件。
- 鏈接:鏈接庫文件生成可執(zhí)行程序。
從圖片中可以看出,test.c經(jīng)過預(yù)處理生成test.i,文件大小增加很多,這是因為宏替換和頭文件包含。編譯后文件變小,匯編生成二進制編碼后文件變大,最后鏈接庫生成可執(zhí)行文件。
庫分為動態(tài)庫和靜態(tài)庫。靜態(tài)庫在鏈接時將庫中的目標文件與程序自身的目標文件組合,生成獨立的可執(zhí)行文件,但文件較大。動態(tài)庫則在程序運行時動態(tài)鏈接,文件較小,但依賴外部庫文件。
靜態(tài)鏈接時使用-Static選項。
可以看出靜態(tài)鏈接的文件比動態(tài)鏈接的大100倍。默認的動態(tài)鏈接實際上是混合鏈接,既有動態(tài)部分也有靜態(tài)部分。
2、動態(tài)和靜態(tài)庫注意事項
- 沒有靜態(tài)庫無法進行靜態(tài)鏈接。
- 沒有動態(tài)庫但有靜態(tài)庫時,默認動態(tài)鏈接指令仍然可以鏈接靜態(tài)庫。
- 默認的gcc test.c -o test指令是混合鏈接,加上-static選項則全部靜態(tài)鏈接。
3、gcc使用
選項1 | 作用 |
---|---|
-E | 只進行預(yù)處理 |
-S | 編譯到匯編語言,不進行匯編和鏈接 |
-c | 編譯到目標代碼 |
選項2 | 作用 |
---|---|
-o | 指定輸出文件 |
1、簡介
git是一個開源的分布式版本控制系統(tǒng),用于管理軟件開發(fā)過程中的代碼版本。git允許開發(fā)人員在本地克隆代碼倉庫,進行開發(fā)、提交、推送等操作,并與遠程倉庫同步。每個開發(fā)者都擁有完整的代碼倉庫副本,包括所有版本歷史和元數(shù)據(jù),使開發(fā)過程更加獨立和靈活。
與集中式版本控制系統(tǒng)不同,git沒有單一的中心服務(wù)器,每個開發(fā)者的本地機器上都有一個完整的版本庫。開發(fā)者可以在本地進行完整的開發(fā)流程,包括提交、暫存等操作,而無需依賴網(wǎng)絡(luò)連接到中心服務(wù)器。
git使用“快照”方式存儲版本信息,每次提交時為整個項目創(chuàng)建一個快照,記錄所有文件的狀態(tài)。git采用高效的壓縮算法和數(shù)據(jù)結(jié)構(gòu)存儲這些快照,減少存儲空間占用,并能快速進行版本切換和合并。
git的分支創(chuàng)建和切換非常輕量級,開發(fā)者可以輕松創(chuàng)建多個分支,用于不同開發(fā)任務(wù),如功能開發(fā)、修復(fù)bug等。各個分支之間相互獨立,開發(fā)人員可以在不同分支上并行開發(fā),然后根據(jù)需要將分支合并到主分支或其他分支上。
主要用于團隊協(xié)作開發(fā)、代碼備份與恢復(fù)、開源項目管理。
2、git使用
大家對Github和gitee并不陌生,前者是全球最大的開源代碼托管平臺,后者是面向國內(nèi)開發(fā)者的代碼托管平臺。可以從中下載許多開源項目和學(xué)習資料,也可以開源項目供其他人查看。由于github訪問不穩(wěn)定,需要借助“技術(shù)”才能使用,這里展示Gitee的使用。
創(chuàng)建新倉庫時,下方的三個選項可以選擇或不選擇。如果倉庫是單一文件倉庫,建議勾選.gitignore,它會將指定后綴名的文件在推送時默認不推送。
readme文件是開源項目的說明書,必不可少。
通過git clone + 遠端倉庫鏈接將遠程倉庫克隆到本地。
創(chuàng)建并編輯文件后,將文件添加到暫存區(qū),然后提交到本地倉庫,最后推送到遠程倉庫,并在備注中說明文件內(nèi)容。
今日分享到此結(jié)束。