什么是vim編輯器?
做編程工作,離不開各種編輯器,每種語言都有適合自己的文本編輯器,比如Python/ target=_blank class=infotextkey>Python用PyCharm,C++用Visual Studio,前端開發(fā)用VS Code......
但是,如果需要一款綜合性價(jià)比最高的編輯器,可以實(shí)現(xiàn)所有編程語言、文本文件操作,就要vim或者emacs。這是linux里面內(nèi)置的終端編輯器,vim是vi的演變,vi是UNIX早期的文本編輯器。
vim優(yōu)點(diǎn):
1.終端操作,不需要圖形化界面
2.效率高
3.快捷鍵豐富,可以在不使用鼠標(biāo)、不脫離鍵盤情況下實(shí)現(xiàn)各種復(fù)雜的文本操作
學(xué)習(xí)vim時(shí),首先掌握基礎(chǔ)命令,可以實(shí)現(xiàn)簡(jiǎn)單程序編寫,設(shè)置禁用鼠標(biāo),強(qiáng)制練習(xí)基礎(chǔ)命令。有問題查閱筆記或者博客,逐漸了解、熟練。一般來說,使用基礎(chǔ)功能即可,滿足遠(yuǎn)程終端中的基礎(chǔ)使用。而復(fù)雜功能不需要單獨(dú)學(xué)習(xí),使用相關(guān)的IDE更加方便,而且大多數(shù)IDE也可以設(shè)置支持vim模式。
項(xiàng)目開發(fā)一般都是在本地調(diào)試,測(cè)試項(xiàng)目成功,再進(jìn)行服務(wù)器環(huán)境部署,上傳代碼,不會(huì)直接在服務(wù)端寫程序,只需完成簡(jiǎn)單的更改。
# vim安裝sudo apt install vim
vim三種模式
- 「命令模式」:可以進(jìn)行刪除、復(fù)制、粘貼等快捷操作。
- 「編輯模式」:可以編輯文件內(nèi)容。
- 「末行模式」:可以通過命令操作文件,比如搜索、保存、退出等。
最基本使用流程
學(xué)習(xí)一款編輯器,一般來說并不是什么難事,只要選擇文件-新建,寫代碼,保存,運(yùn)行就可以,但是vim是Linux終端中的編輯器,沒有任何圖形化界面,這就意味著所有的操作都要通過命令完成,顯然,我們需要掌握相當(dāng)多的指令,且靈活熟練使用,才可以提升開發(fā)效率。
第1步,創(chuàng)建/打開文件:
使用指令vim 文件名,如果文件不存在,直接新建并打開,如果文件存在則直接打開編輯文件。
打開文件后,下方顯示文件名,光標(biāo)指向第一行,然而目前處于命令模式,一切操作皆為指令,并不能寫程序。
如果要進(jìn)入插入模式,有很多快捷鍵,我們當(dāng)前只使用最基本操作,記住字母i就可以,i是insert插入的意思,按下后就會(huì)進(jìn)入插入模式。
平面下方顯示INSERT,此時(shí),就可以愉快的寫程序啦~
Linux并不以后綴名區(qū)分文件,我的文件命名為test.txt,后綴.txt在windows系統(tǒng)里面是文本文檔,我的文件也就當(dāng)作一個(gè)記事本,寫入字符串Hello cat.。
接下來就要保存退出,需要按鍵盤左上角ESC鍵,退回命令模式,然后輸入冒號(hào),需要按住Shift鍵組合使用。
然后在冒號(hào)后面輸入wq命令,w是寫入,也是保存的意思,q是quit退出的意思。
這樣,vim的最基本使用就完成了,雖然vim學(xué)習(xí)曲線很陡峭,但是只要掌握最基本使用流程就可以快速的用vim工作,然后再逐漸掌握其他的快捷鍵或命令,提升開發(fā)效率。
退出后,查看當(dāng)前目錄,出現(xiàn)test.txt文件。那么如何查看文件,我們?cè)賮韺W(xué)習(xí)一個(gè)常用命令cat,cat 文件名就可以查看文件中的內(nèi)容。
這樣文件就已經(jīng)查看成功啦,證明vim寫入也是正確的。
vim配置文件
配置文件只需在home目錄下創(chuàng)建一個(gè).vimrc隱藏文件即可,然后進(jìn)行個(gè)性化配置,這部分內(nèi)容不必深入研究,主要是代碼縮進(jìn),顯示行號(hào),括號(hào)匹配,支持鼠標(biāo)等操作,直接網(wǎng)上搜索選擇一個(gè)適合自己的配置即可,如下是我個(gè)人的當(dāng)前配置,供大家復(fù)制粘貼~
"顯示行號(hào)set nu"啟動(dòng)時(shí)隱去援助提示set shortmess=atI"語法高亮syntax on"使用vim的鍵盤模式"set nocompatible"不需要備份set nobackup"沒有保存或文件只讀時(shí)彈出確認(rèn)set confirm"鼠標(biāo)可用set mouse=a"tab縮進(jìn)set tabstop=4set shiftwidth=4set expandtabset smarttab"文件自動(dòng)檢測(cè)外部更改set autoread"c文件自動(dòng)縮進(jìn)set cindent"自動(dòng)對(duì)齊set autoindentset cindent"智能縮進(jìn)set smartindent"高亮查找匹配set hlsearch"背景色set background=dark"顯示匹配set showmatch"顯示標(biāo)尺,就是在右下角顯示光標(biāo)位置set ruler"去除vi的一致性set nocompatible"允許折疊set foldenable"""""""""""""""""設(shè)置折疊""""""""""""""""""""""根據(jù)語法折疊"set fdm=syntax"手動(dòng)折疊"set fdm=manual"設(shè)置鍵盤映射,通過空格設(shè)置折疊nnoremap @=((foldclosed(line('.')<0)?'zc':'zo'))"不要閃爍set novisualbell"啟動(dòng)顯示狀態(tài)行set laststatus=2"淺色顯示當(dāng)前行autocmd InsertLeave * se nocul"用淺色高亮當(dāng)前行autocmd InsertEnter * se cul"顯示輸入的命令set showcmd"被分割窗口之間顯示空白set fillchars=vert:/set fillchars=stl:/set fillchars=stlnc:/let &termencoding=&encodingset fileencodings=utf-8,gbkinoremap ( ()iinoremap [ []iinoremap { {}iinoremap ' ''iinoremap " ""i
命令模式
打開文件后,默認(rèn)就是命令模式,可以進(jìn)行光標(biāo)移動(dòng)、復(fù)制粘貼、搜索替換等操作。
注意:命令模式中,敲擊的鍵盤會(huì)被識(shí)別為命令,而不是輸入內(nèi)容。
移動(dòng)光標(biāo)
指令
功能
h 或 左方向鍵(←)
光標(biāo)向左移動(dòng)一個(gè)字符
l 或 右方向鍵(→)
光標(biāo)向右移動(dòng)一個(gè)字符
k 或 上方向鍵(↑)
光標(biāo)向上移動(dòng)一個(gè)字符
j 或 下方向鍵(↓)
光標(biāo)向下移動(dòng)一個(gè)字符
Shift+6 或 0 或 home鍵
光標(biāo)移動(dòng)到行首
Shift+4 或 $ 或 end鍵
光標(biāo)移動(dòng)到行尾
Ctrl + f 或 pg up鍵
【屏幕】向下移動(dòng)一頁
Ctrl + b 或 pg dn鍵
【屏幕】向上移動(dòng)一頁
gg
移動(dòng)到文件的第一行
G
移動(dòng)到文件的最后一行
nG
移動(dòng)到文件的第n行
四個(gè)方向鍵hjkl比較常用,很多初學(xué)者認(rèn)為我用上下左右箭頭也是很方便啊,實(shí)際上,長(zhǎng)期使用vim最終會(huì)形成肌肉記憶,只管專注于寫程序,手指可以完全不脫離鍵盤,更用不上鼠標(biāo),但是為了讓初學(xué)者操作更加方便,我在配置文件中增加了set mouse=a,使得鼠標(biāo)可以使用。
gg跳到第一行,G跳到最后一行也是高頻使用的命令,數(shù)字+G,針對(duì)于文件比較大,我們要跳轉(zhuǎn)到指定位置或者大概范圍,比如跳轉(zhuǎn)到第8行,按下數(shù)字8,再按下G。
搜索替換
指令
功能
/字符串 + 回車
向下搜索指定字符串
?字符串 + 回車
向上搜索指定字符串
n
繼續(xù)向下搜索下一個(gè)字符串
N
繼續(xù)向上搜索下一個(gè)字符串
%s/word1/word2/g
將文件中的word1替換為word2
%s/word1/word2/gc
將文件中的word1替換為word2,但替換前需要用戶確認(rèn)!
1,10s/word1/word2/g
將第1行到第10行的word1替換為word2
舉個(gè)例子,搜索就是末行模式下,在冒號(hào)后面輸入/root,我當(dāng)前復(fù)制一份/etc/passwd存儲(chǔ)用戶名密碼的文件,搜索root用戶,這是Linux里面唯一一個(gè)最高權(quán)限用戶。
搜索到的內(nèi)容會(huì)高亮顯示。如果后面還有root可以按下n選擇下一個(gè),即next。
復(fù)制粘貼刪除
指令
功能
刪除后一個(gè)字符(光標(biāo)當(dāng)前字符)
X
刪除前一個(gè)字符
dd
剪切一行
ndd
剪切n行
yy
復(fù)制一行
nyy
復(fù)制n行
p
粘貼到下一行
P
粘貼到上一行
u
撤回操作
Ctrl+r
撤回剛才的撤回操作
r
修改單個(gè)字符
R
連續(xù)修改多個(gè)字符,ESC退出
.(小數(shù)點(diǎn))
重復(fù)剛才的操作
編輯模式
指令
功能
i
進(jìn)入輸入模式,在光標(biāo)前面插入
進(jìn)入輸入模式,在當(dāng)前行首第一個(gè)非空格字符處插入
a
進(jìn)入輸入模式,在光標(biāo)后面(當(dāng)前光標(biāo)所在字符)插入
A
進(jìn)入輸入模式,在當(dāng)前行尾第處插入
o
進(jìn)入輸入模式,在光標(biāo)下一行插入新行
O
進(jìn)入輸入模式,在光標(biāo)上一行插入新行
ESC鍵
退出編輯模式(輸入模式)
末行模式
英文狀態(tài)的 :鍵 進(jìn)入末行模式
命令模式 或 vim打開文件時(shí),按下 : 鍵,左下角出現(xiàn) :時(shí),即表示末行模式。
指令
功能
:w
保存
:q
退出
:wq
保存后退出
:q!
不保存,強(qiáng)制退出
:set nu
顯示行號(hào)
:set nonu
取消 顯示行號(hào)
:w [文件名]
將編輯后的內(nèi)容保存到另一個(gè)文件中(另存為)
:2,5 w [文件名]
將第2到5行的內(nèi)容保存到另一個(gè)文件中(指定行另存為)
:r [文件名]
輸入另一個(gè)文件的內(nèi)容,到光標(biāo)的下一行
視頻講解
vim的更多操作可以觀看下方視頻,按照步驟,一定會(huì)快速掌握,強(qiáng)制自己使用vim完成日常代碼任務(wù),一周左右就可以靈活使用啦~
- 什么是Linux系統(tǒng)?我們是否要用Linux
- Linux系統(tǒng)虛擬機(jī)和云服務(wù)配置,快速搭建學(xué)習(xí)環(huán)境
- 學(xué)習(xí)Linix命令行,用手就行!