vim文字編輯器及Makefile的使用
#define # 數字
vi的三種模式:命令列模式,插入模式,底行模式。
命令列:控制游標移動,刪除,移動複製某區段。
進入插入行,底行模式。
插入模式:輸入文字,ESC返回命令列。
底行模式:儲存,退出,設定編輯環境,如尋找字串,列出行號等。
△一般命令列與底行合併,所以分為命令列和插入模式。
建立與退出步驟:
vi 檔名 建立檔案並進入 命令列模式
i 注意配置完vim後任意鍵即可進入插入行,在輸入文字後也可直接刪除
進入插入模式 刪除字需要按esc返回命令列模式
底行模式下 shift ZZ 儲存退出
命令列模式下
:w 檔名 文章將以指定檔名儲存
:wq 儲存退出
:qi 不儲存強制退出
(命令列模式下) 預設在命令列
複製與刪除
刪除:
x:按一次,刪除游標所在位置的1個字元 (相當於剪下,也放在緩衝區中)
#x:刪除游標所在位置的1個字元及往後#-1個字元
//X:按一次,刪除游標所在位置前面1個字元
//#X:刪除游標所在位置前面#個字元
dd:刪除游標所在行
#dd:從游標所在行開始刪除#行
複製:
//yw:將游標所在之處到字尾的字元複製到緩衝區中 p:將緩衝區字元貼上到游標後面
//#yw:將游標所在之處到下面#-1行復制到緩衝區 p:將緩衝區字元插入到游標後面
yy:將游標所在行復制到緩衝區
#yy:將游標所在行及下面#-1行復制到緩衝區
p:將緩衝區內的字元貼上
u:撤銷上一次操作,可多次撤銷
游標移動:
方向鍵上下左右 && h 左j下 k上 l右
Ctrl+b 螢幕往前移動一頁
Ctrl+f 螢幕往後移動一頁
Ctrl+u 螢幕往前移動半頁
Ctrl+d 螢幕往後移動半頁
Ctrl+g 列出游標所在行的行號
#+方向鍵 向上向下移動幾行向左向右移動幾列
gg/1G 游標移動到文章開頭
G 游標移動到文章結尾
#G 移動到第#行開頭
數字0/home/^ 游標移動到本行開頭
$/home 游標移動到所在行的行尾
w 游標移動到下一字的開頭
e 游標移動到下一字的字尾
b 游標回到上個字的開頭
#1 游標移到該行的第#個位置
#[Enter] 游標向下移動#行
[#1] 游標移動到該行的第#個位置
標記:
命令列模式下
m + [a-zA-z] 做標記
'[a-zA-Z] 移動到標記,'為單引號
:marks 列出所有標記
:delmarks[a-zA-Z] 刪除標記
特殊標記:
' 跳轉前的位置
" 最後編輯的位置
替換:
r 替換游標所在處的字元
R 替換游標所到之處的字元,直到按下Esc鍵為止
/關鍵詞 可用來查詢,所有關鍵詞顯示高亮背光,游標停留在第一個關鍵詞
n向下找
N向上找
替換
%s/xxx1/xxx2/g 將xxx1替換為xxx2 g代表全部
sp xxx 開啟其他檔案xxx
Ctrl-w-j 下一個視窗
Ctrl-w-k 上一個視窗
Ctrl-w-q 退出當前視窗
(底行模式下) 命令列模式按shift+:進入底行模式
set nu 列出每一行的行號
set nonu 不顯示行號3
# 跳到第#行
/關鍵詞 如果第一次找的關鍵詞不是想要的,可以一直按n,向下查詢
?關鍵詞 如果第一次找的關鍵詞不是想要的,可以一直按n,向上查詢
noh 消除高亮
在檔案外面執行命令:vim 檔名 x 直接停在第x行
Vim配置:
autoindent 自動縮排
set shiftwidth=4
set tabstop=4 設定Tab長度為四個字元
syntax on 關鍵詞高亮 可以檢錯
gcc 編譯
gcc hello.c -o hello 輸出檔名
執行檔案 絕對路徑 /...
相對路徑 ./
編譯步驟
- 預處理 處理#開頭的程式碼(標頭檔案#include>複製替換,巨集定義#define>替換,條件編譯#if>註釋 #if 0 這一部分程式碼不編譯)
gcc -E 生成.i檔案(文字檔案)
- 編譯 1、語法檢查 2、把C程式碼翻譯成彙編程式碼
gcc -S 生成.s檔案(文字檔案)
- 彙編 把組合語言編譯成二進位制檔案
gcc -c 生成.o檔案(二進位制檔案)
- 連結 連線程式需要用到的原始檔
gcc ...o 有幾個o寫幾個
gcc -c hello.c -o hello.o 前三步一步到位
兩個檔案同時 gcc hello.c print.c -o hello
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc -c hello.c -o hello.o
gcc hello.o print.o -o hello
make(命令) Makefile(檔案) 工程較大時用到 添加註釋#開頭
通過make執行檔案 檢測hello 是否變化 不變化不編譯
先執行Makefile 再makefile
基本格式 target:dependency target:目標 dependency:依賴 有幾個寫幾個
(Tab鍵)command command:命令
最簡單的makefile:
mkdir Makefile
cd Makefile
vim hello.c
#include<stdio.h>
int main()
{
printf("HelloWorld!\n");
return 0;
}
vim Makefile
hello:hello.c
gcc hello.c -o hello
命令make 列印命令 並執行
2.0的Makefile
Target=hello
Object=hello.c
$(Target):$(Object)
gcc $(Object) -o $(Target) //$()引用
3.0的Makefile
Target=hello
Object=hello.o
$(Target):$(Object)
gcc $(Object) -o $(Target)
hello.o:hello.c
gcc -c hello.c -o hello.o //隱含規則,都可以不寫 hello.o 自動尋找hello.c 生成
兩個檔案
vim hello.c
vim print.c
vim Makefile
Target=hello
Object=hello.o print.o
$(Target):$(Object)
gcc $(Object) -o $(Target)
.PHONY:clean
rm *.o hello
Makefile還有清理功能
如果有clean檔案 執行make clean時認為clean為目標,報錯
此時.phony:clean將clean設成偽目標
拓展:
ELT 開頭為二進位制檔案
history | grep gcc 檢視歷史命令gcc
將檔案從電腦移到虛擬機器的方法
1.直接拖進去
2.選單->虛擬機器->設定->選項->共享資料夾->總是啟用->新增自定義資料夾->確定
路徑: /mnt/hgfs/share/