---
# System prepended metadata

title: Vim基礎

---

# **Vim基礎**
## ****1.安裝****
在Linux系統中本身並不自帶vim，需要自己手動下載。
1.進入kali後開啟終端機
2.在終端機中輸入`sudo apt install vim -y`進行安裝
![螢幕擷取畫面 2024-01-07 151909](https://hackmd.io/_uploads/BkNz20DOp.png)

## ****2.操作流程(開檔->寫入->存檔->關閉)****
### **開檔**
在終端機上輸入`vim <檔案名稱>`
![螢幕擷取畫面 2024-01-07 160323](https://hackmd.io/_uploads/B1xUBkud6.png)

### **寫入**
剛進入vim時，是處於普通模式(在此模式下無法輸入)，需要按`i`挑轉到編輯模式才可以開始書寫
![螢幕擷取畫面 2024-01-07 160352](https://hackmd.io/_uploads/SypiBJu_T.png)

### **存檔**
編輯完後按ESC離開編輯模式跳回開檔時的普通模式，然後直接輸入`:w`就會直接進行存檔
![螢幕擷取畫面 2024-01-07 160517](https://hackmd.io/_uploads/BJqZUJdOa.png)

### **關閉**
在編輯完後，在普通模式下直接輸入 `:q` vim就會結束了，並跳回開檔時終端機的畫面
![螢幕擷取畫面 2024-01-07 160540](https://hackmd.io/_uploads/HJYT8J_d6.png)

## **3.Vim指令**
### **編輯模式轉換**
```
- i : 在游標位置進入編輯模式
- I : 在游標行的第一個非空白字元進入編輯模式
- o : 向下新增一行，並進入編輯模式
- O : 向上新增一行，並進入編輯模式
- [ESC] : 取消指令或退出編輯模式
```

### **游標移動**
```
- gg : 移到第一行
- G : 移到最後一行
- <行數>G : 移動到第n行
- 0 : 移動到該行最前面
- $ : 移動到該行最後面
- <字數>[Space] : 向右移動n個字元
- <行數>[Enter] : 向下移動 n 行
```

### **標記與其相關操作**
```
- v : 開始字串標記
- V : 開始一行一行標記
- d : 刪除標記的內容
- y : 複製標記的內容
```

### **複製**
```
- yy : 複製游標行
- yG : 複製游標行到最後一行
- y1G : 複製游標行到第一行
- y0 : 複製游標處到第一個字元
```

### **貼上**
```
- p : 在下一行貼上複製或刪除的內容
- P : 在上一行貼上複製或刪除的內容
```

### **刪除**
```
- dd : 刪除游標行
- dG : 刪除游標行到最後一行
- d1G : 刪除游標行到第一行
- d0 : 刪除游標處到第一個字元
```

### **字串搜尋**
```
- /<字串> : 向下搜尋字串
- ?<字串> : 向上搜尋字串
- /\c<字串> : 向下搜尋字串，不分大小寫
- ?\c<字串> : 向上搜尋字串，不分大小寫
- n : 繼續下一個搜尋結果
- N : 繼續上一個搜尋結果
- :<起始行>,<中止行>s/<原先字串>/<取代字串> : 從第n行到第n行將<原先字串>替換成<取代字串>
```

### **檔案操作**
```
- :w : 存檔 (加 ! 表示強制存檔)
- :w <檔案名稱> : 另存新檔
- :wq : 存檔並退出vim
- :e <檔案名稱> : 編輯其它檔案
- :r <檔案名稱> : 讀入檔案內容，並加到游標行的後面
- :n : 切換到下一個開啟的檔案
- :N : 切換到上一個開啟的檔案
- :set nu : 顯示行號
- :set nonu : 取消行號
- :files : 列出所有開啟的檔案
```

### **分割畫面**
```
- :new : 新增水平視窗
- :new <檔案名稱> : 新增水平視窗，並在新增的視窗載入檔案
- :vnew : 新增垂直視窗
- :vnew <檔案名稱> : 新增垂直視窗，並在新增的視窗載入檔案
- [Ctrl] + W 鬆開後再按 [方向鍵] : 切換視窗
- :only : 僅保留目前的視窗
```

### **其他**
```
- u : 還原
- . : 重覆上一個指令
- !<指令> : 執行Linux指令，並顯示執行結果
- :q : 退出vim(加 ! 表示強制退出)
```
