Vim(Vi IMproved)是一款強大的文本編輯器,廣泛用于Unix和Linux系統(tǒng)。它具有高度可定制性和豐富的功能集,使其成為程序員、系統(tǒng)管理員和文本編輯愛好者的首選工具之一。
1、模式
正常模式(Normal Mode):
正常模式是 Vim 的默認模式,它用于導航、編輯、復制和粘貼文本,以及執(zhí)行各種命令。
在正常模式下,按鍵被解釋為命令,而不是直接插入文本。
用于導航的鍵包括 h(左)、j(下)、k(上)、l(右),以及其他命令如 w(向前移動一個詞)、b(向后移動一個詞)、gg(跳轉到文件開頭)和 G(跳轉到文件末尾)等。
用于刪除和復制文本的命令包括 x(刪除字符)、dd(刪除整行)、yy(復制整行)等。
可以使用 : 進入命令模式,執(zhí)行各種命令,如保存文件 :w、退出 :q 等。
插入模式(Insert Mode):
插入模式用于輸入文本,類似于普通文本編輯器的行為。
進入插入模式的方式包括:
i:在光標前插入文本。
I:在當前行的開頭插入文本。
a:在光標后插入文本。
A:在當前行的末尾插入文本。
o:在當前行的下方插入新行并進入插入模式。
O:在當前行的上方插入新行并進入插入模式。
從插入模式返回正常模式通常使用 Esc 鍵。
可視模式(Visual Mode):
可視模式允許選擇文本塊以進行操作,如復制、刪除或替換。
進入可視模式的方式包括:
v:按字符選擇。
V:按行選擇。
Ctrl + v:按塊選擇。
一旦選擇文本塊,可以執(zhí)行命令來操作選定的文本。
命令模式(Command-Line Mode):
在正常模式下,鍵入冒號 : 進入命令模式,用于執(zhí)行各種命令。
常見的命令包括:
:w:保存文件。
:q:退出 Vim。
:q!:強制退出 Vim,放棄未保存的更改。
:wq 或 :x:保存并退出。
:e:重新加載文件。
:r:在當前位置插入另一個文件的內(nèi)容。
:set:配置 Vim 選項。
替換模式(Replace Mode):
替換模式用于覆蓋文本,逐字符替換已有文本。
進入替換模式的方式包括:
R:按字符替換。
r:按需替換單個字符。
2、切換模式
從正常模式切換到插入模式:
插入模式用于在文本中輸入或編輯內(nèi)容,類似于普通文本編輯器的行為。
在正常模式下,可以使用以下命令來切換到插入模式:
i:在光標前插入文本。
I:在當前行的開頭插入文本。
a:在光標后插入文本。
A:在當前行的末尾插入文本。
o:在當前行的下方插入新行并進入插入模式。
O:在當前行的上方插入新行并進入插入模式。
一旦進入插入模式,可以自由地鍵入文本,直到按下 Esc 鍵返回正常模式。
從正常模式切換到可視模式:
可視模式允許選擇文本塊以進行操作,如復制、刪除或替換。
在正常模式下,可以使用以下命令來切換到可視模式:
v:按字符選擇。
V:按行選擇。
Ctrl + v:按塊選擇。
一旦進入可視模式,可以使用導航鍵來選擇文本塊,然后執(zhí)行命令來操作選定的文本。
從插入模式返回正常模式:
從插入模式返回正常模式通常使用 Esc 鍵。按下 Esc 鍵會立即退出插入模式,并將光標定位回正常模式下的當前位置。
3、導航
基本導航命令:
使用以下鍵在正常模式下進行基本的導航:
h:將光標向左移動一個字符。
j:將光標向下移動一行。
k:將光標向上移動一行。
l:將光標向右移動一個字符。
這些鍵在鍵盤上排列成一個類似箭頭鍵的形狀,以便記憶。
詞級導航:
Vim 允許以詞為單位移動光標,而不是逐字符移動。以下是詞級導航的常見命令:
w:將光標向前移動到下一個單詞的開頭。
b:將光標向后移動到當前單詞的開頭。
e:將光標移動到當前單詞的末尾。
ge:將光標移動到前一個單詞的末尾。
行級導航:
可以使用以下命令在行級別上導航:
0(零):將光標移到當前行的開頭。
$:將光標移到當前行的末尾。
^:將光標移到當前行的第一個非空字符。
文件級導航:
可以使用以下命令在文件級別上導航:
gg:將光標移到文件的第一行。
G:將光標移到文件的最后一行。
:<行號>:將光標移到指定行號。
滾動導航:
可以使用以下命令進行滾動導航:
Ctrl + u:向上滾動半屏。
Ctrl + d:向下滾動半屏。
Ctrl + b:向上滾動一屏。
Ctrl + f:向下滾動一屏。
搜索導航:
搜索命令可以幫助您快速定位文本。在正常模式下,按 / 進入搜索模式,輸入要搜索的文本,然后按 Enter 鍵開始搜索。使用 n 鍵和 N 鍵在搜索結果之間移動。
書簽導航:
可以使用書簽來標記文本的特定位置,然后輕松跳轉到這些位置。以下是一些書簽命令:
m<標記>:將光標位置標記為指定的 <標記>。
' 或 ````:跳轉到上一個書簽。
`:<標記>:跳轉到指定的書簽。
4、編輯文本
刪除文本:
在正常模式下,可以使用以下命令來刪除文本:
x:刪除光標下的字符。
dd:刪除整行。
D:刪除從光標位置到行末的文本。
:n1,n2d:刪除指定行范圍(n1 到 n2)的文本。
復制和剪切文本:
在正常模式下,可以使用以下命令來復制和剪切文本:
yy:復制當前行。
y$:復制從光標位置到行末的文本。
p:粘貼之前復制或剪切的文本。
:n1,n2y:復制指定行范圍(n1 到 n2)的文本。
:n1,n2d:剪切指定行范圍(n1 到 n2)的文本。
粘貼文本:
在正常模式下,使用 p 命令可以粘貼最近復制或剪切的文本。粘貼操作會在光標位置后方插入文本。
替換文本:
在正常模式下,可以使用以下命令來替換文本:
r<字符>:用指定字符替換光標下的字符。
R:進入替換模式,可以連續(xù)替換多個字符,按 Esc 退出替換模式。
插入文本:
插入模式用于在文本中插入新內(nèi)容??梢栽谡DJ较率褂靡韵旅钸M入插入模式:
i:在光標前插入文本。
I:在當前行的開頭插入文本。
a:在光標后插入文本。
A:在當前行的末尾插入文本。
o:在當前行的下方插入新行并進入插入模式。
O:在當前行的上方插入新行并進入插入模式。
撤銷和重做:
在正常模式下,可以使用以下命令來撤銷和重做操作:
u:撤銷最后的操作。
Ctrl + r:重做操作(撤銷的反操作)。
全局替換:
可以使用 :s 命令在文件中進行全局替換操作。例如,:s/old/new/g 將文件中的所有 old 替換為 new。
多光標編輯:
Vim 支持多光標編輯,可以使用 Ctrl + v 進入可視塊模式,選擇多個光標位置,然后同時編輯這些位置的文本。
5、搜索和替換
搜索文本:
正向搜索:在正常模式下,按 / 進入搜索模式。輸入要搜索的文本,然后按 Enter 鍵開始搜索。使用 n 鍵移動到下一個匹配項,使用 N 鍵移動到上一個匹配項。
反向搜索:在正常模式下,按 ? 進入反向搜索模式。輸入要搜索的文本,然后按 Enter 鍵開始反向搜索。使用 n 鍵移動到上一個匹配項,使用 N 鍵移動到下一個匹配項。
高亮匹配項:默認情況下,Vim 會高亮匹配的文本。若要關閉或打開高亮顯示,可以在正常模式下使用 :set hlsearch 或 :set nohlsearch 命令。
搜索選項:可以在搜索命令中使用一些選項,如 /pattern/i 可以忽略大小寫,/pattern/n 可以禁用正則表達式匹配。
搜索下劃線和其他特殊字符:如果要搜索下劃線等特殊字符,可以使用 \ 進行轉義,例如 /my\_variable/。
使用尋找命令:在正常模式下,按 * 可以尋找光標下的單詞,然后使用 # 尋找上一個匹配項。
替換文本:
替換當前匹配項:在正常模式下,可以使用 :s 命令來替換當前匹配項。例如,要將當前單詞 old 替換為 new,可以輸入 :s/old/new/。
全局替換:若要替換文件中的所有匹配項,可以在替換命令中使用 g 標志,如 :%s/old/new/g。
替換并確認:若要逐個確認替換每個匹配項,可以在替換命令中使用 c 標志,如 :%s/old/new/gc。
替換范圍內(nèi)的文本:可以使用 :n1,n2s 命令來替換指定行范圍內(nèi)的文本。例如,:10,20s/old/new/g 會在第 10 行到第 20 行之間進行全局替換。
替換回退:Vim 會在替換操作之前自動創(chuàng)建一個回退點,以便可以撤銷替換。在正常模式下,可以使用 u 命令來撤銷替換。
替換確認:在替換模式下,可以按下 y 來確認替換當前匹配項,按下 n 來跳過當前匹配項。
替換和保存:如果想在替換文本的同時保存文件,可以使用 :w 命令,如 :%s/old/new/g | w。
6、多窗口
打開和關閉窗口:
水平分屏:在正常模式下,可以使用以下命令來創(chuàng)建水平分屏窗口:
:split <文件路徑>:創(chuàng)建水平分屏窗口并打開指定文件。
:split 或 Ctrl + w 之后按 s:創(chuàng)建水平分屏窗口,將當前文件分為上下兩個部分。
垂直分屏:在正常模式下,可以使用以下命令來創(chuàng)建垂直分屏窗口:
:vsplit <文件路徑>:創(chuàng)建垂直分屏窗口并打開指定文件。
:vsplit 或 Ctrl + w 之后按 v:創(chuàng)建垂直分屏窗口,將當前文件分為左右兩個部分。
關閉窗口:
在窗口中,可以使用以下命令關閉當前窗口:
:q:關閉當前窗口。
:q!:強制關閉當前窗口并放棄更改。
:wq 或 :x:保存并關閉當前窗口。
若要在不關閉 Vim 實例的情況下關閉所有窗口,請使用 :qall。
切換窗口:
切換焦點:在多窗口環(huán)境中,可以使用以下命令切換焦點到不同的窗口:
Ctrl + w,然后按 Ctrl + w:循環(huán)切換焦點到下一個窗口。
Ctrl + w,然后按 h、j、k 或 l:將焦點分別切換到左、下、上、右的窗口。
切換窗口布局:可以使用以下命令更改窗口布局:Ctrl + w,然后按 R:旋轉當前窗口布局,將水平分屏轉為垂直分屏或反之。
調(diào)整窗口大?。?/b>
調(diào)整窗口大小:在多窗口中,可以使用以下命令調(diào)整窗口大小:
Ctrl + w,然后按 < 或 >:增加或減少當前窗口的寬度。
Ctrl + w,然后按 + 或 -:增加或減少當前窗口的高度。
均等分屏:如果希望均等分割窗口,可以使用以下命令:Ctrl + w,然后按 =:將所有窗口均等分布在 Vim 窗口中。
多文件操作:
打開多個文件:在 Vim 中可以同時打開多個文件。例如,可以在命令行中運行 vim file1.txt file2.txt 來同時打開兩個文件。
在窗口之間復制粘貼:在多窗口中,可以使用 :sp 和 :vsp 命令來將一個窗口中的內(nèi)容復制到另一個窗口。
7、配置文件
創(chuàng)建和編輯配置文件:
創(chuàng)建配置文件:如果系統(tǒng)上尚不存在 .vimrc 文件,可以使用文本編輯器創(chuàng)建一個。在終端中運行以下命令:touch ~/.vimrc
編輯配置文件:使用文本編輯器打開 .vimrc 文件,例如:vim ~/.vimrc,可以在配置文件中添加和編輯各種配置選項,以自定義 Vim 的行為。
配置選項:
縮進設置:設置 tabstop、shiftwidth 和 expandtab 選項來控制縮進的方式。例如:set tabstop=4 set shiftwidth=4 set expandtab
行號和列號:啟用行號和列號的顯示,使得在編輯時更容易定位位置。例如:set number set relativenumber
自動縮進:啟用自動縮進,以便在插入模式中自動進行適當?shù)目s進。例如:set autoindent
語法高亮:啟用語法高亮以提高代碼的可讀性。例如:syntax enable
主題和顏色:使用不同的顏色方案來改變 Vim 的外觀。例如:colorscheme desert
搜索設置:配置搜索選項,如忽略大小寫、高亮顯示匹配項等。例如:set ignorecase set smartcase set hlsearch
顯示設置:配置 Vim 顯示的一些選項,如行末空格可視化、顯示光標當前位置等。例如:set list set showmatch
鍵映射和快捷鍵:創(chuàng)建自定義鍵映射和快捷鍵,以加快編輯操作。例如:nnoremap <C-n> :NERDTreeToggle<CR>
插件管理器設置:如果使用插件管理器(如 vim-plug、Vundle 等),可以在配置文件中添加插件列表和設置。例如:
? ? call plug#begin('~/.vim/plugged')
? ? Plug 'tpope/vim-fugitive'
? ? call plug#end()
保存和應用配置:
保存配置文件:在編輯完 .vimrc 文件后,使用 :w 命令保存更改。
應用配置:在 Vim 中編輯 .vimrc 文件后,可以使用以下命令使配置生效,而無需退出 Vim::source ~/.vimrc,或者可以重新啟動 Vim 以應用新的配置。
8、插件
安裝插件:
Vim-Plug:Vim-Plug 是一個流行的插件管理器,易于安裝和使用??梢栽?.vimrc 文件中添加插件列表,然后運行 :PlugInstall 命令來安裝插件。
Vundle:Vundle 是另一個常見的插件管理器,它也使用 .vimrc 配置文件來管理插件??梢允褂?:PluginInstall 命令來安裝插件。
Pathogen:Pathogen 是一種更傳統(tǒng)的插件管理器,它允許將每個插件放置在單獨的目錄中,并通過簡單地將插件目錄添加到 Vim 的運行時路徑中來加載插件。
常見插件用途:
代碼編輯插件:
代碼編輯插件可用于增強編程體驗,包括語法高亮、代碼折疊、自動完成、代碼片段、代碼導航等功能。一些流行的代碼編輯插件包括:
vim-airline:自定義狀態(tài)欄。
YouCompleteMe:強大的自動完成和代碼建議插件。
NerdTree:文件樹瀏覽器。
主題和外觀插件:
主題和外觀插件用于改變 Vim 的外觀,包括顏色方案、狀態(tài)欄、行號等。一些主題插件包括:
gruvbox:受歡迎的暗色調(diào)主題。
solarized:另一個受歡迎的顏色方案。
lightline:輕量級狀態(tài)欄插件。
文件管理和導航插件:
文件管理和導航插件用于更輕松地瀏覽和管理文件系統(tǒng)。一些文件管理插件包括:
NERDTree:文件樹瀏覽器。
CtrlP:快速文件搜索和切換插件。
fzf:模糊文件搜索和快速查找插件。
版本控制插件:
版本控制插件用于與版本控制系統(tǒng)(如 Git)集成,以在 Vim 中管理代碼庫。一些版本控制插件包括:
vim-fugitive:強大的 Git 插件。
GitGutter:顯示行內(nèi) Git 狀態(tài)信息。
文本處理和編輯插件:
文本處理和編輯插件用于執(zhí)行各種文本操作,如文本搜索、替換、排序和格式化。一些文本處理插件包括:
Ag:快速搜索文本。
Surround:快速添加、更改和刪除文本周圍的符號。
vim-easymotion:快速移動光標。
9、在線幫助
:help 命令:
在 Vim 中,可以隨時使用 :help 命令來訪問在線幫助系統(tǒng)。只需在正常模式下鍵入 :help,然后輸入想要了解的主題、命令或選項的名稱,然后按 Enter 鍵。例如:
:help:打開幫助索引。
:help :w:查看 :w 命令的幫助。
:help insert-mode:查看插入模式的幫助。
幫助索引:
:help 命令將打開幫助索引,該索引包含了關于 Vim 的廣泛文檔??梢允褂靡韵骆I盤命令來導航和查找?guī)椭臋n:
使用上下箭頭鍵或 j 和 k 鍵在不同主題之間導航。
按 Ctrl + ] 鍵跳轉到當前選定主題的詳細信息。
按 Ctrl + t 鍵返回到上一個主題。
使用 / 鍵來搜索關鍵字,然后按 Enter 鍵查找匹配項。
使用 :q 命令退出幫助系統(tǒng)。
幫助標簽頁:
幫助系統(tǒng)支持多個標簽頁,允許在不同主題之間切換。以下是一些常用的標簽頁命令:
:help tab-page:打開標簽頁幫助。
:tabnew 或 :help :tabnew:打開新標簽頁。
:tabnext 和 :tabprev:在標簽頁之間切換。
:tabclose 或 :q:關閉當前標簽頁。
特定主題的幫助:
如果知道自己想要查看特定主題的幫助,可以直接使用 :help 命令,后跟主題名稱。例如:
:help motions:查看有關移動命令的幫助。
:help text-objects:查看有關文本對象(如單詞、段落等)的幫助。
內(nèi)置教程:
Vim 帶有一些內(nèi)置教程,可以通過 :vimtutor 命令啟動。這是一個交互式的教程,可以幫助新用戶學習 Vim 的基本功能。
離線幫助:
如果使用的是 Vim 的源代碼分發(fā)版本,通常會包含完整的離線幫助文檔。這些文檔可以在本地查看,無需互聯(lián)網(wǎng)連接。
這些是 Vim 的基本概念和一些常用命令,Vim 具有豐富的功能和命令,允許用戶高效地編輯文本。要充分發(fā)揮 Vim 的威力,需要不斷練習和學習,并逐漸掌握更高級的功能和定制選項。可以在Vim內(nèi)部查看幫助文檔來深入了解其功能和用法。