目錄
一、vim的基本概念
二、Vim 的三種基本模式
1. 命令模式(Command Mode)
2. 插入模式(Insert Mode)
3. 底行模式(Last Line Mode)
模式切換方法
?IDE例子:
三、vim的基本操作
進入vim
模式切換
保存與退出
四、使用vim的大坑注意事項
原因分析
鍵位編碼差異
vim 的默認設計
終端/系統的中間處理
解決方案
方法 1:臨時切換(推薦)
方法 2:修改 vim 配置(比較麻煩)
方法 3:切換輸入習慣
底層原理
確保指令輸入的一致性
五、vim命令模式命令集匯總
【移動光標】
【插入模式】
【模式切換】
【刪除】
【復制粘貼】
【剪切】
【撤銷】
【大小寫切換】
【替換】
【更改】
【翻頁】
【跳至指定行】
六、vim末行模式命令集匯總
行號設置
跳轉與查找
文件操作
分屏操作
系統命令
問題提示
七、簡單 Vim 配置 [了解]
配置文件位置
系統級配置
用戶級配置
常用配置選項
插件安裝指南
第一步:準備工作
?第二步:安裝TagList插件
第三步:安裝WinManager插件
第四步:驗證安裝
重量級選手 —— 一鍵切換到大佬的配置
一、vim的基本概念
? ? ? ? vim(vi IMproved)是一款功能強大的多模式文本編輯器,專為高效代碼編輯而設計。作為開發者的得力助手,vim通過其獨特的模式設計大幅提升了文本編輯效率。
????????簡單來說,vi和vim都是多模式編輯器,但vim是vi的升級版。它不僅完全兼容vi的所有命令,還新增了許多實用功能,比如語法高亮和可視化操作。此外,vim支持在多種環境中運行,包括終端、X Window、Mac OS和Windows系統。為便于學習,我們統一以vim為例進行講解。
二、Vim 的三種基本模式
我們重點講解 Vim 的三種基礎模式(Vim 實際有多種模式,目前掌握這三種即可):
1. 命令模式(Command Mode)
- 又稱普通模式(Normal Mode)
- 功能:
- 控制光標移動
- 執行刪除字符、單詞或整行操作
- 進行文本復制和移動
- 可切換到插入模式或底行模式
2. 插入模式(Insert Mode)
- 功能:
- 唯一支持文本輸入的模式
- 按 ESC 鍵返回命令模式
- 后續最常用的編輯模式
3. 底行模式(Last Line Mode)
- 功能:
- 文件保存與退出
- 文本替換操作
- 字符串搜索
- 顯示行號等
模式切換方法
- 命令模式下按 Shift+:進入底行模式
- 查看所有模式:在 Vim 中輸入
:help vim-modes
命令(共 12 種模式,包括 6 種基礎模式和 6 種附加模式)
古老的計算機連接的鍵盤上使用的就是vim文本編輯器,如圖中保留著的這四個功能鍵:
?IDE例子:
三、vim的基本操作
(這里演示了,后面就不演示了,太繁瑣了,操作太多了,明白就可以了)
進入vim
在系統提示符號輸入vim及文件名稱后,就進入vim全屏幕編輯畫面:
$ vim test.c
模式切換
-
進入vim后默認處于[命令模式],此時需要切換到[插入模式]才能輸入文字
-
[命令模式]切換至[插入模式]
-
輸入「a」:在當前光標的后一位置進入插入模式。
-
輸入「i」:在當前光標處進入插入模式。
-
輸入「o」:在當前光標處新起一行進入插入模式。
-
-
[插入模式]切換至[命令模式]:按
ESC
鍵-
在[插入模式]下,只能持續輸入文字。
-
如需修改錯誤,有兩種方式(均可實現文字修正):
- 按「ESC」鍵切換至[命令模式],再移動光標進行刪除
- 直接刪除錯誤內容
-
-
[命令模式]切換至[末行模式]
-
按
Shift + ;
(即輸入:
)
-
保存與退出
在[正常模式]下,按:
進入末行模式后:
-
w
?保存當前文件 -
wq
保存該文件并退出vim -
q!
不保存該文件并強制退出vim
四、使用vim的大坑注意事項
? ? ? ? 我在使用vim遇到的情況是 vim 中一個非常經典的數字鍵盤輸入問題,根本原因在于:(前提你的外設鍵盤是全鍵鍵盤)數字小鍵盤(Numpad)(右邊)的輸入信號和主鍵盤區的數字鍵(左邊)在系統中被識別為不同的鍵位。以下是詳細解釋和解決方案:
原因分析
-
鍵位編碼差異
-
主鍵盤區數字鍵(如字母區上方的?
1
?2
?3
)在系統中被識別為普通數字鍵 -
小鍵盤數字鍵(Numpad)在系統中被識別為?特殊功能鍵(如?
KP_1
?KP_2
?KP_3
)
-
-
vim 的默認設計
-
vim 的普通模式命令(如?
3l
)僅響應主鍵盤區的數字輸入 -
小鍵盤的數字輸入會被 vim 識別為無效命令或插入操作(部分系統會直接輸入數字字符)
-
-
終端/系統的中間處理
????????某些終端模擬器(如 iTerm2、GNOME Terminal)或系統驅動會將小鍵盤數字轉為特殊信號,導致 Vim 無法正確解析?
解決方案
方法 1:臨時切換(推薦)
-
關閉 NumLock
按下鍵盤的?NumLock
?鍵(指示燈熄滅),此時小鍵盤會變成方向鍵/功能鍵,避免誤觸發插入模式
方法 2:修改 vim 配置(比較麻煩)
????????在系統級配置下(當然也可以是用戶級配置,后面第七點有講),vimrc在根目錄下的etc目錄中,在?vimrc
?中添加以下配置,強制兼容小鍵盤輸入:
" 允許小鍵盤數字作為命令前綴
set notimeout
set ttimeout
set timeoutlen=100
map <Esc>OQ 1
map <Esc>OR 2
map <Esc>OS 3
map <Esc>Ot 4
map <Esc>Ou 5
map <Esc>Ov 6
map <Esc>Ow 7
map <Esc>Ox 8
map <Esc>Oy 9
map <Esc>Op 0
方法 3:切換輸入習慣
-
使用主鍵盤區數字鍵輸入命令
-
需要輸入大量數字時再開啟小鍵盤
底層原理
????????小鍵盤的數字鍵在終端中實際發送的是?轉義序列(如?ESC O q
?代表?KP_1
),而 Vim 默認不將這些序列識別為數字命令。這與終端類型(TERM
?環境變量)、鍵盤驅動、GUI 環境都有關聯。
????????如果問題持續,建議在終端設置中檢查「將小鍵盤數字作為普通鍵發送」選項(常見于 XShell/iTerm2 的高級設置)。
確保指令輸入的一致性
????????在輸入命令時,必須嚴格遵守規范的輸入方式。例如:若要執行「G」命令(跳轉到文章末尾),就必須準確輸入大寫字母G,而不能使用小寫字母g。
五、vim命令模式命令集匯總
【移動光標】
- 按「k」:光標上移。
- 按「j」:光標下移。
- 按「h」:光標左移。
- 按「l」:光標右移。
- 按「$」:移動到光標所在行的行尾。
- 按「^」:移動到光標所在行的行首。
- 按「gg」:移動到文本開始。
- 按「Shift+g」:移動到文本末尾。
- 按「n+Shift+g」:移動到第n行行首。
- 按「n+Enter」:當前光標向下移動n行。
- 按「w」:光標從左到右,從上到下的跳到下一個字的開頭。
- 按「e」:光標從左到右,從上到下的跳到下一個字的結尾。
- 按「b」:光標從右到左,從下到上的跳到上一個字的開頭
- 按「G」:移動到文章的最后
- 按「#l」:光標移到該行的第#個位置,如:5l,56l
- 按「ctrl」+「b」:屏幕往"后"移動一頁
- 按「ctrl」+「f」:屏幕往"前"移動一頁
- 按「ctrl」+「u」:屏幕往"后"移動半頁
- 按「ctrl」+「d」:屏幕往"前"移動半頁
【插入模式】
- 按「i」:在當前光標處進入插入模式(從光標當前位置開始輸入文件)
- 按「a」:在當前光標的后一位置進入插入模式(從光標下一位置開始輸入文字)
- 按「o」:在當前光標處新起一行進入插入模式(插入新行并從行首輸入文字)
【模式切換】
- 「ESC」鍵:從插入模式切換為命令模式
- 輸入「Shift+;」即可進入底行模式,實際上就是輸入「:」
【刪除】
- 按「x」:刪除光標所在位置的字符(每按一次刪除一個字符)
- 按「nx」:刪除光標所在位置開始往后的n個字符(如「6x」刪除后面6個字符)
- 按「X」:刪除光標所在位置的前一個字符(大寫的X)
- 按「nX」:刪除光標所在位置的前n個字符(如「20X」刪除前面20個字符)
- 按「dd」:刪除光標所在行
- 按「ndd」:刪除光標所在行開始往下的n行(從光標行開始刪除#行)
【復制粘貼】
- 按「yy」:復制光標所在行到緩沖區
- 按「nyy」:復制光標所在行開始往下的n行到緩沖區(如「6yy」拷貝6行文字)
- 按「yw」:將光標所在位置開始到字尾的字符復制到緩沖區
- 按「nyw」:將光標所在位置開始往后的n個字復制到緩沖區(復制#個字)
- 按「p」:將已復制的內容在光標的下一行粘貼上(需與"y"命令配合)
- 按「np」:將已復制的內容在光標的下一行粘貼n次
【剪切】
- 按「dd」:剪切光標所在行
- 按「ndd」:剪切光標所在行開始往下的n行
- 按「p」:將已剪切的內容在光標的下一行粘貼上
- 按「np」:將已剪切的內容在光標的下一行粘貼n次
【撤銷】
- 按「u」:撤銷(可多次按撤銷多步操作)
- 按「Ctrl+r」:恢復剛剛的撤銷(撤銷的恢復)
【大小寫切換】
- 按「~」:完成光標所在位置字符的大小寫切換
- 按「n~」:完成光標所在位置開始往后的n個字符的大小寫切換
【替換】
- 按「r」:替換光標所在處的字符
- 按「R」:替換光標所到位置的字符,直到按下「Esc」鍵為止
【更改】
- 按「cw」:將光標所在位置開始到字尾的字符刪除,并進入插入模式(更改到字尾處)
- 按「cnw」:將光標所在位置開始往后的n個字刪除,并進入插入模式(如「c3w」更改3個字)
【翻頁】
- 按「Ctrl+b」:上翻一頁(屏幕往"后"移動一頁)
- 按「Ctrl+f」:下翻一頁(屏幕往"前"移動一頁)
- 按「Ctrl+u」:上翻半頁(屏幕往"后"移動半頁)
- 按「Ctrl+d」:下翻半頁(屏幕往"前"移動半頁)
【跳至指定行】
- 按「Ctrl+g」:列出光標所在行的行號
- 按「nG」:移動到第n行行首(如「15G」跳轉到第15行)
六、vim末行模式命令集匯總
????????在使用底行模式之前,請先按「ESC」鍵確保處于普通模式,再按「:」進入底行模式,輸入完指令后按Enter回車鍵執行該指令。
行號設置
-
「set nu」:顯示行號
-
「set nonu」:取消行號
跳轉與查找
-
「#」:跳轉到指定行(如「:15」跳轉到第15行)
-
「/關鍵字」:向下查找關鍵字(按「n」查找下一個)
-
「?關鍵字」:向上查找關鍵字(按「n」查找上一個)
文件操作
-
「w」:保存文件
-
「q」:退出vim(加「!」強制退出)
-
「wq」:保存并退出
分屏操作
-
「vs 文件名」:垂直分屏打開新文件
-
「Ctrl+w+w」:在分屏間切換光標
系統命令
-
「!指令」:執行外部Shell命令(如「!ls」查看目錄)
問題提示
-
/ 和 ? 查找的區別:/是向下查找,?是向上查找
七、簡單 Vim 配置 [了解]
配置文件位置
-
系統級配置
-
路徑:
/etc/vimrc
-
說明:這是公共的 vim 配置文件,對所有用戶有效
-
-
用戶級配置
-
路徑:~
/.vimrc(
如果不存在,則需要手動創建它)
# 1. 確保在主目錄 cd ~# 2. 創建.vimrc文件 touch .vimrc# 3. 編輯配置文件(按i進入編輯模式,添加配置后ESC+:wq保存退出) vim .vimrc
-
說明:
-
從管理員切換到用戶:
su [用戶名]
-
進入主目錄:
cd
~ -
編輯配置文件:
vim .vimrc
-
-
常用配置選項
- 啟用語法高亮:
:syntax on
- 顯示行號:
:set nu
- 設置縮進為4個空格:
:set shiftwidth=4
插件安裝指南
????????要打造美觀實用的 Vim 環境,默認配置可能功能有限。你可以通過安裝插件來增強體驗。首先請確認你正在為正確的用戶進行配置,然后按照以下步驟操作:
第一步:準備工作
-
確保已創建用戶級vim配置
cd ~ touch .vimrc mkdir -p ~/.vim/{doc,plugin} # 創建插件所需目錄
?第二步:安裝TagList插件
-
下載插件
#直接下載(需有wget) wget http://www.vim.org/scripts/download_script.php?src_id=19574 -O taglist.zip
-
解壓安裝
unzip taglist.zip -d taglist cd taglist# 復制文件到vim配置目錄 cp doc/taglist.txt ~/.vim/doc/ cp plugin/taglist.vim ~/.vim/plugin/
????????3.配置(編輯~/.vimrc)
vim ~/.vimrc
按i
進入插入模式,添加:
" TagList配置
let Tlist_Show_One_File=1 " 只顯示當前文件的標簽
let Tlist_Exit_OnlyWindow=1 " 如果只有taglist窗口則退出vim
let Tlist_Use_Right_Window=1 " 在右側顯示窗口
按ESC
后輸入:wq
保存退出
第三步:安裝WinManager插件
-
下載插件
wget http://www.vim.org/scripts/download_script.php?src_id=754 -O winmanager.zip
-
解壓安裝
unzip winmanager.zip -d winmanager cd winmanagercp doc/winmanager.txt ~/.vim/doc/ cp plugin/winmanager.vim ~/.vim/plugin/ cp plugin/wintagexplorer.vim ~/.vim/plugin/
-
配置(編輯~/.vimrc)
vim ~/.vimrc
添加:
" WinManager配置 let g:winManagerWindowLayout='FileExplorer|TagList' " 窗口布局 nmap wm :WMToggle<cr> " 設置wm快捷鍵切換窗口管理器
????????保存退出(:wq
)
第四步:驗證安裝
-
重啟Vim
-
測試功能
-
打開一個C文件:
:e test.c
-
普通模式下輸入
wm
,應該可以看到:-
左側的文件瀏覽器
-
右側的函數標簽列表
-
-
再次輸入
wm
可關閉
更具體請移步到:手把手教你把Vim改裝成一個IDE編程環境(圖文)_vim 打造成 ide-CSDN博客,其他手冊,請執行?vimtutor 命令。
重量級選手 —— 一鍵切換到大佬的配置
? ? ? ? 上述的配置 vim 方法可能會比較復雜,特別是需要安裝插件時,不建議手動逐個配置。更簡單的方式是直接運行以下命令(注意:要在需要配置 vim 的用戶下執行此命令,不建議直接在 root 用戶下操作):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
執行后會提示輸入 root 密碼,按指引操作即可:
稍微有點慢,我們等一下安裝:
安裝配置完成后,手動執行source ~/.bashrc
命令即可生效:
????????這時我們打開上次的test.c,可以看到此時vim文本編輯器具備了語法高亮、自動補全、行號顯示和自動縮進等功能: