Vim-一款好用的文本編輯器


關於vim的使用,通過博客,無論是靜態的截圖或者是代碼/文本復制,很難展示所要表現的內容。更多需要讀者親自敲鍵盤實踐之后才知道其作用。

本文不會也無法描述vim過多的細節,僅僅是對於常用的命令做一下記錄,因為vim的幫助文檔很龐當。

對於vim的初學者來說,可直接使用vimtutor教程先了解一下,關於該教程本人也實踐過並撰寫了博文:《vimtutor學習筆記》

有遇到一些沒有解釋過的單詞或者英文詞匯,建議大家先看我的vimtutor教程或者man一下或者實踐。

簡介

vim是一款在Linux上強大的文本編輯器,同類型的強大對手是Emacs。

vim的全拼是Vi IMproved,而Vi也是一款文本編輯器,vim相對vi增加了很多的新特性,例如語法高亮等。

vim [options] [filelist]

vim可以編輯單個文件或者多個文件。簡單選項如下。

+n:打開文件后,光標處於第n行的行首;

+/PATTERN:打開文件后,光標處於第一個匹配到PATTERN的位置;

+:打開文件后,光標處於最后一行的行首;

 

 

命令基礎

此為一般模式(normal)與命令行(command-line)模式常用命令。

一般模式命令語法格式。

operator [numbers] motion

部分可以只有雙operator來表示光標所在行的操作,例如dd。

operator operator

 

移動/范圍(motion)

大部分命令,都可以結合motion。命令與motion的結合,motion可前可后,需要具體情況具體分析。

3dd:刪除3行。不能寫成dd3。
dw:刪除光標處字符至下個單詞的詞首,不包含下個單詞的詞首。不能寫成wd。

下文,具體的命令中,就不再提到命令(operator)與motion的結合。

畢竟這篇博文只打算用作常用命令參考!

字符間

hjkl:左下上右。

單詞間

w:下一個單詞詞首。

e:當前或者下一個單詞詞尾。

b:當前或者上一個單詞的詞首。

行首行尾

0:絕對行首。

^:行首。

$:行尾。

行間

gg:首行。

G:尾行。

nG:第n行。

句間和段間

(:上一句。

):下一句。

{:上一段。

}:下一段。

可視化(visual)

v:字符可視化模式。

V:行可視化模式。

括號匹配

%:括號匹配。

 

翻屏

Ctrl+f:向下翻一屏。

Ctrl+b:向上翻一屏。

Ctrl+d:向下翻半屏。

Ctrl+u:向上翻半屏。

 

各種命令雜七雜八

刪除

x:刪除單個字符。

dd:刪除整行。

進入插入模式

i:insert,在光標位置插入。

a:append,在光標位置的后面插入。

o:在光標位置的下方打開一個新行,並使光標位於行首。

I:在光標所在行的行首插入。

A:在光標所在行的行尾插入。

O:在光標位置的上方打開一個新行,並使光標位於行首。

保存與退出

w:保存。

q:退出。

ZZ、:x、:wq:保存並退出。

q!:強制退出不保存。

替換(replace)

r:單字符。

R:進入替換模式。

改變(change)

區別於替換,會進入插入模式。

cc:整行改變。

復制和粘貼

y:復制。

yy或者Y:整行復制。

p:下/后粘貼。

P:上/前粘貼。

撤銷與重做

u:撤銷。

U:行撤銷。

CTRL-R:恢復撤銷。

.:重做。

讀取文件和寫入文件(另存為)

:r /PATH/FROM/FILE:讀取文件並插入。

:w /PATH/TO/FILE:另存為某個文件。

地址定界

:start_pos[,end_pos]

m:第m行。

.:當前行。

$:最后一行。

m,n:第m行到第n行。

m,+n:第m行及其后面的n行。

.,$-1:當前行至倒數第二行。

1,$:全文。

%:全文。

/PATTERN/:第一次被PATTERN匹配到的行。

/first/,$:第一次被first匹配到的行至最后一行。

注意:匹配的時候,是從光標所在行開始向文件底部匹配。

/PATTERN1/,/PATTERN2/:從光標所在處開始,第一次匹配到PATTERN1的行至第一次匹配到PATTERN2的行。

查找

查找中的pattern支持正則表達式,應該是BRE。

/PATTERN:從光標所在行向下查找PATTERN所匹配的字符串。

?PATTERN:從光標所在行向上查找PATTERN所匹配的字符串。

注意:以上2個都可以循環查找。

n:下一個,與命令方向相同。

N:上一個,與命令方向相反。

查找替換

s/SEARCH/REPLACE/MODIFIER

SEARCH:表示所要查找的內容,支持RE。

REPLACE:表示所要替換成的內容,不支持RE,但可以引用分組的內容。

  第一種引用的形式,和RE中是類似的。

  第二種引用的形式是引用整個SEARCH所匹配到的內容,即使用&符號。

MODIFIER:表示修飾符。

  i:查找時忽略大小寫。

  g:替換行中所有匹配到的內容。

  c:確認式替換。

當SEARCH或者REPLACE中的內容存在“/”的時候,可以使用轉義字符對其進行轉義(“\/”),或者使用其他字符(@或者#)代替。

 

多文件

# vim FILE1 FILE2 ...

文件間切換

:next:切換到下一個文件。

:prev:切換到上一個文件。

:first:切換到第一個文件。

:last:切換到最后一個文件。

退出多文件

:wqall

:wall

:qall

:qall!

 

多窗口

-o:水平分割窗口。

-O:垂直分割窗口。

Ctrl+w:切換到下一個窗口。

Ctrl+w,s:在當前窗口水平切割出一個新的窗口。

Ctrl+w,v:在當前窗口垂直切割出一個新的窗口。

 

vim選項設置

/etc/vimrc:全局配置文件。

~/.vimrc:用戶配置文件。

顯示行號

:set number
:set nu
:set nonumber
:set nonu

后續示例只寫配置全寫和縮寫。

自動縮進

autoindent,ai

高亮搜索

hlsearch,hls

增量搜索

incsearch,ic

語法高亮

syntax on
syntax off

忽略字符大小寫

ignorecase,ic

制表符寬度

tabstop,ts

 

幫助

:help
:help subject

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM