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