# 簡介
Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。 vim 則可以說是程序開發者的一項很好用的工具。連 vim 的官方網站 ([http://www.vim.org](http://www.vim.org/)) 自己也說 vim 是一個程序開發工具而不是文字處理軟件。
# vim 的使用
## 啟動
* `vim -c cmd file`: 在打開文件前,先執行指定的命令;
* `vim -r file`: 恢復上次異常退出的文件;
* `vim -R file:`:以只讀的方式打開文件,但可以強制保存;
* `vim -M file`:以只讀的方式打開文件,不可以強制保存;
* `vim -y num file`: 將編輯窗口的大小設為`num`行;
* `vim + file`: 從文件的末尾開始;
* `vim +num file`: 從第num行開始;
* `vim +/string file`: 打開file,并將光標停留在第一個找到的string上。
* `vim –remote file`:用已有的vim進程打開指定的文件。 如果你不想啟用多個vim會話,這個很有用。但要注意, 如果你用vim,會尋找名叫VIM的服務器;如果你已經有一個gvim在運行了, 你可以用gvim –remote file在已有的gvim中打開文件。
## vim 的幾種模式
* 命令模式:可以使用快捷鍵命令,或按:輸入命令行。
* 插入模式:可以輸入文本,在正常模式下,按`i`、`a`、`o`等都可以進入插入模式。
* 可視模式:正常模式下按v可以進入可視模式, 在可視模式下,移動光標可以選擇文本。按V進入可視行模式, 總是整行整行的選中。ctrl+v進入可視塊模式。
* 替換模式:正常模式下,按R進入。
## 命令模式:
啟動`vim`后,默認就是命令模式,在插入模式時,也可以按鍵盤上的`ESC`鍵也可進入命令模式,在此模式下我們不可以直接對文檔內容進行編輯,但可以輸入相關命令來完成我們想要的操作,以下是幾個常用的命令:
### 進入插入模式
* `i` 切換到輸入模式,可以對文件進行編輯(光標位置不變)
* `o` 切換到輸入模式,可對文件進行編輯(在光標后新增一行,并且光標移動至新行行首)
* `a` 切換到輸入模式,可對文件進行編輯(光標向后移動一個字符)
### 打開或保存文件
* `:e file` –關閉當前編輯的文件,并開啟新的文件。 如果對當前文件的修改未保存,vi會警告。
* `:e! file` –放棄對當前文件的修改,編輯新的文件。
* `:e+file` – 開始新的文件,并從文件尾開始編輯。
* `:e+n file` – 開始新的文件,并從第n行開始編輯。
* `:enew` –編譯一個未命名的新文檔。
* `:e` – 重新加載當前文檔。
* `:e!` – 重新加載當前文檔,并丟棄已做的改動。
* `:e#`或`ctrl+^` – 回到剛才編輯的文件,很實用。
* ` :f`或`ctrl+g` – 顯示文檔名,是否修改,和光標位置。
* `:f filename` – 改變編輯的文件名,這時再保存相當于另存為。
* `gf` – 打開以光標所在字符串為文件名的文件。
* `:w` – 保存修改,不退出編輯器。
* `:n1,n2w filename` – 選擇性保存從某n1行到另n2行的內容。
* `:wq` – 保存并退出。
* `ZZ` – 保存并退出。
* `:x` – 保存并退出。
* `:q`或`quit` –退出當前窗口。
* `:saveas newfilename` – 另存為
### 光標操作
* `h` 左移一個字符
* `l` 右移一個字符
* `j` 下移一行
* `k` 上移一行
>[info] 光標的移動操作可以配合數字使用,比如`3h`可以表示將光標左移3個字符,`10j`表示將光標下移`10`行
* `gg` 將光標移到到文件頭部
* `GG` 將光標移動到文件末尾
### 翻屏操作
* `ctrl+f`: 下翻一屏
* `ctrl+b`: 上翻一屏
* `ctrl+d`: 下翻半屏
* `ctrl+u`: 上翻半屏
* `ctrl+e`: 向下滾動一行
* `ctrl+y`: 向上滾動一行
### 查找
`/something`: 在后面的文本中查找`something`
`?something`: 在前面的文本中查找`something`
### 替換
* `:s/old/new` 用`new`替換當前行第一個`old`
## 輸入模式
### 復制粘貼
* `[n]x`::剪切光標右邊n個字符
* `[n]X`: 剪切光標左邊n個字符
* `y`:復制在可視模式下選中的文本
* `yy` 或 `Y`: 復制整行文本
>[info] 本文部分內容來自[https://blog.csdn.net/weixin\_37657720/article/details/80645991](https://blog.csdn.net/weixin_37657720/article/details/80645991) ,感謝博主和CSDN,詳細使用方法可點擊鏈接查看
- 序言
- Linux 的安裝
- VMware 的安裝
- VMware 的配置
- CentOS 下載與虛擬機硬件配置
- Linux 的分區
- ContOS 安裝
- 虛擬機網絡配置
- 遠程連接工具安裝
- 基礎(舊)
- Linux 和 Windows 的區別
- 目錄結構
- 注意事項
- Linux的常用命令
- 用戶及用戶組
- 文件及權限
- 目錄與文件權限的意義
- 文件及目錄管理相關
- 常用命令
- 系統安裝
- Linux的簡介
- Linux 各發行版介紹
- CentOS的部署
- 基礎
- 文件和用戶管理
- Linux目錄結構
- 文件管理相關
- cd 切換目錄
- pwd 顯示當前位置
- ls 列出目錄下的文件和子目錄
- touch 創建文件
- mkdir 創建目錄
- cp 復制文件/目錄
- mv 移動或改名文件/目錄
- rm 刪除文件/目錄
- chattr 改變文件屬性
- lsattr 顯示文件屬性
- 用戶管理
- useradd 添加用戶
- passwd 修改用戶密碼
- id 查看用戶ID信息
- userdel 刪除用戶
- usermod 修改用戶信息
- groupadd 創建用戶組
- groupdel 刪除用戶組
- su 切換用戶帳號
- sudo 以管理員的身份執行命令
- 權限管理
- chmod 修改文件/目錄權限
- chown 修改文件擁有者或所屬組
- chgrp 修改文件所屬組
- setfacl 設置文件權限列表
- getfacl 查看文件權限列表
- vim的使用
- 進程管理
- ps 查看進程
- top 動態顯示進程
- kill 殺死進程
- nice 修改進程優先級
- jobs 顯示后臺任務列表及任務狀態
- fg 將后臺運行的進程調整至前臺運行
- bg 將在后臺暫停進行繼續執行
- 磁盤管理
- lsblk 列出塊設備信息
- fdisk 磁盤分區
- partprobe 重新讀取分區表
- mkfs 建立文件系統(格式化)
- mont 掛載設備
- df 查看磁盤使用情況
- unount 卸載掛載設備
- 交換空間 swap
- free 查看內存使用狀態
- mkswap 設置交換分區
- swapon 激活交換空間
- LVM邏輯卷管理
- LMV的工作原理
- pvcreate 創建物理卷
- pvs 查看物理卷
- pvscan 查看每個PV的信息
- pvdisplay 顯示物理卷詳細信息
- vgcreate 創建卷組
- vgs 查看卷組
- vgscan 查看每個VG的信息
- vgdisplay 顯示卷組詳細信息
- lvcreate 創建邏輯卷
- vgextend 擴展卷組空間
- lvextend 擴展邏輯卷空間
- resize2fs 調整文件系統大小
- RAID
- 文件查找和壓縮
- which 命令查找
- find 根據文件名查找文件
- locate 查找文件
- tar 文件打包
- 軟件安裝
- RPM包管理
- yum 安裝軟件
- rpm 安裝軟件
- 源碼包管理
- 計劃任務
- at 一次性計劃任務
- cron 循環任務
- 日志系統
- 網絡管理
- ip 顯示或設置網絡設備
- OSI簡介