Vim Logo
自己根據(jù)馬哥教程總結(jié)的部分Vim基礎(chǔ)使用
Vim是一款很強(qiáng)大的文本編輯工具.如果你常需要書(shū)寫(xiě)或編輯大量文本,那學(xué)會(huì)它絕對(duì)會(huì)讓你的工作與學(xué)習(xí)如虎添翼.
幾種模式:
1.命令 : 默認(rèn)進(jìn)入顯示的為命令模式,光標(biāo)為粗豎線涵防。按[aAiIoO..]等字母可切換到編輯模式.
2.編輯 : 光標(biāo)為細(xì)豎線。別的模式按‘Esc’或'Ctrl+c'可以切換到命令模式.
3.末行 : 在命令模式下輸入‘:’號(hào)可以切換到末行.
4.可視 : 在命令模式下輸入v或V可切換到可視模式.
打開(kāi)文件:
vim +num file : 打開(kāi)文件后光標(biāo)處于第num行第一個(gè)字符處.
vim + file: 打開(kāi)文件后光標(biāo)在最后一行沪铭。
vim +/PATTERN file : 打開(kāi)文件后光標(biāo)處于第一個(gè)被PATTERN匹配到的地方
同時(shí)打開(kāi)多個(gè)文件:
用法 :vim file1 file2 ... (默認(rèn)只顯示第一個(gè)打開(kāi)的文件,因?yàn)橹挥幸粋€(gè)窗口)
:next 打開(kāi)下個(gè)file
:prev 打開(kāi)上個(gè)file
:first 打開(kāi)第一個(gè)file
:last 打開(kāi)最后一個(gè)file
退出所有文件:
:wall 保存所有文件
:qall 退出所有文件
:wqall 保存退出所有文件匹配到的行的行首
多窗口操作多個(gè)文件
多窗口同時(shí)顯示多個(gè)文件:
vim -o file1 file2 水平分割窗口(即file1在上file2在下) Ctrl+w 松開(kāi)后再 按上下方向鍵切換光標(biāo)所在窗口
vim -O file1 file2 垂直分割窗口(即file1在左file2在右) Ctrl+w 松開(kāi)后再按左右方向鍵切換光標(biāo)所在窗口
再切分文件:
Ctrl+w,s: 水平分割光標(biāo)所在的窗口,即上下顯示同一個(gè)文件(逗號(hào)處表松開(kāi)前兩鍵)
Ctrl+w,v: 垂直分割光標(biāo)所在的窗口,即左右顯示當(dāng)前文件的兩份相同的內(nèi)容(同上)
Ctrl+w,c: 在光標(biāo)所在的窗口中依次取消多窗口(同Ctrl + w,q功能一致)
Ctrl+w,x: 交換同一文件但多個(gè)窗口中的內(nèi)容(即窗口位置互相調(diào)換)
命令模式下的光標(biāo)跳轉(zhuǎn)操作
#G : #號(hào)用數(shù)字替代,表示跳至第#行,這個(gè)功能還可以用末行模式來(lái)完成:按':'號(hào)然后輸入想查找的行號(hào)回車(chē)即可.如 :25
+ : 光標(biāo)移動(dòng)到非空格符的下一列
- : 光標(biāo)移動(dòng)到非空格符的上一列
H : 光標(biāo)移動(dòng)到當(dāng)前屏第一行第一個(gè)字符
M : 光標(biāo)移到當(dāng)前屏中間行第一個(gè)字符
L : 光標(biāo)移動(dòng)至當(dāng)前屏最后一行第一個(gè)字符
行首行尾跳轉(zhuǎn):
^ : 跳轉(zhuǎn)至行首第一個(gè)非空白字符
$ : 中轉(zhuǎn)至行尾最后一個(gè)非空白字符
0 : 中轉(zhuǎn)至絕對(duì)行首
句間跳轉(zhuǎn):vim -R file: 以只讀模式打開(kāi)file文件壮池。
單詞間跳轉(zhuǎn):
w : 下一個(gè)單詞的詞首
b : 上一個(gè)單詞的詞首
e : 下一個(gè)單詞的詞尾
n <space> : 光標(biāo)向右偏移n個(gè)字符
行間跳轉(zhuǎn):
gg: 跳至文件第一行
G : 跳至文件最后一行
n <enter> : 光標(biāo)向下移動(dòng)n行
行內(nèi)跳轉(zhuǎn):
0: 絕對(duì)行首
^: 行內(nèi)第一個(gè)非空白字符
$: 絕對(duì)行尾
句子跳轉(zhuǎn):
) : 句子間跳轉(zhuǎn),用得少
( :
段間跳轉(zhuǎn):
} :
{ :
翻屏:
Ctrl + f: 文件后翻一屏
Ctrl + d: 半屏
Ctrl + b: 文件前翻一屏
Ctrl + u: 半屏
命令模式下的編輯操作
編輯(支持前面加數(shù)字):
刪除:
x,X(向前刪一個(gè)字符), xp(對(duì)調(diào))
dd,db,de,d^,d$,...
改變:會(huì)切換到輸入模式
c, cc, cw, c$, c^
替換:
r : 替換光標(biāo)當(dāng)前那個(gè)字符
R : 會(huì)一直替換光標(biāo)所指的文字,直到按下ESC為止
復(fù)制:(yank)
y (用法同刪除d類(lèi)似) 如yy即復(fù)制一行
粘貼:
P(當(dāng)前行上一行), p(往當(dāng)前行下一行)
如果復(fù)制或刪除的不是整行則
P --> 粘貼在光標(biāo)所在字符的前面
p --> 后
撤銷(xiāo):
u : 撤銷(xiāo)此前的操作
#u: 撤銷(xiāo)此前#個(gè)操作
撤銷(xiāo)此前的撤銷(xiāo): Ctrl + r
重復(fù)執(zhí)行此前的命令: .
插入: i I
添加: a A
插入新一行: o O
可視模式(相當(dāng)于窗口界面上用鼠標(biāo)選中一段內(nèi)容):
v : 按字符選定
V : 按行選定
對(duì)選定的內(nèi)容可結(jié)合上述編輯命令進(jìn)行操作
末行模式:
1. 地址定界
%: 表示全文
.: 表示當(dāng)前行
$: 表示最后一行
+#: 向下的#行
strart_pos[,end_pos]:
例如:5 第5行
:5,10 從第5行到第10行 # 示例刪除5至99行內(nèi)容 :5,99d
:5,+10 從第5行開(kāi)始往后加10行
/pattern/: 光標(biāo)所在處起始向文件尾部第一次被模式所匹配到的行 # :/
如 :/first/,$
:/pattern1/,/pattern2/ 表示從光標(biāo)所在處起始,第一次由pat1匹配到的行開(kāi)始,至第一次由pat2匹配到的行結(jié)束.
同地址定界符配合使用的命令:
d,y,c,
w /PATH/TO/SOMEFILE: 將范圍內(nèi)的文本保存至指寶的文件中.
r /PATH/TO/SOMEFILE: 將指定的文件中的文件讀取并插入至指定的位置.
2.查找(這個(gè)方法同Linux man手冊(cè)是一樣的)
/PATTERN: 從當(dāng)前光標(biāo)所在處向文件尾部查找能夠被當(dāng)前模式匹配到的所有字符串
n 下一個(gè)
N 上一個(gè)
?PATTERN: 從當(dāng)前光標(biāo)所在處向文件首部查找能夠被當(dāng)前模式匹配到的所有字符串
n與N的用法與上面相反
3.查找并替換
格式:
:s/old/new/修飾符 其中old可使得正則表達(dá)式,new不能使用正則表達(dá)式但可以引用.
修飾符:
i : 查找時(shí)忽略大小寫(xiě)
g : 全局替換,意味著一行中如果匹配到多次則均替換
4. 常用示例:
:g/^$/d 刪除空白行
5. 寫(xiě)輸出(拷貝 保存)保存到其他文件
:35,46 w /root/new.txt
6. 在當(dāng)前光標(biāo)后 讀(插)入新內(nèi)容
:r /home/james/books.txt
Vim配置文件常用功能配置指令:
vim FILE +NUM: 定位具體某行打開(kāi)FILE
set nocompatible " 關(guān)閉 vi 兼容模式
syntax on " 自動(dòng)語(yǔ)法高亮
set list " 顯示tab與換行符"$"
set number " 顯示行號(hào)
set cursorline " 突出顯示當(dāng)前行
set ruler " 打開(kāi)狀態(tài)欄標(biāo)尺
set shiftwidth=4 " 設(shè)定 << 和 >> 命令移動(dòng)時(shí)的寬度為 4
set softtabstop=4 " 使得按退格鍵時(shí)可以一次刪掉 4 個(gè)空格
set nobackup " 覆蓋文件時(shí)不備份
set autochdir " 自動(dòng)切換當(dāng)前目錄為當(dāng)前文件所在的目錄
filetype plugin indent on " 開(kāi)啟插件
set backupcopy=yes " 設(shè)置備份時(shí)的行為為覆蓋
set ignorecase smartcase " 搜索時(shí)忽略大小寫(xiě),但在有一個(gè)或以上大寫(xiě)字母時(shí)仍保持對(duì)大小寫(xiě)敏感
set nowrapscan " 禁止在搜索到文件兩端時(shí)重新搜索
set incsearch " 輸入搜索內(nèi)容時(shí)就顯示搜索結(jié)果
set hlsearch " 搜索時(shí)高亮顯示被找到的文本
set noerrorbells " 關(guān)閉錯(cuò)誤信息響鈴
set novisualbell " 關(guān)閉使用可視響鈴代替呼叫
set t_vb= " 置空錯(cuò)誤鈴聲的終端代碼
" set showmatch " 插入括號(hào)時(shí)伦意,短暫地跳轉(zhuǎn)到匹配的對(duì)應(yīng)括號(hào)
" set matchtime=2 " 短暫跳轉(zhuǎn)到匹配括號(hào)的時(shí)間
set magic " 設(shè)置魔術(shù)
set hidden " 允許在有未保存的修改時(shí)切換緩沖區(qū)火窒,此時(shí)的修改由 vim 負(fù)責(zé)保存
set guioptions-=T " 隱藏工具欄
set guioptions-=m " 隱藏菜單欄
set smartindent " 開(kāi)啟新行時(shí)使用智能自動(dòng)縮進(jìn)
set backspace=indent,eol,start " 不設(shè)定在插入狀態(tài)無(wú)法用退格鍵和 Delete 鍵刪除回車(chē)符
set cmdheight=1 " 設(shè)定命令行的行數(shù)為 1
set laststatus=2 " 顯示狀態(tài)欄 (默認(rèn)值為 1, 無(wú)法顯示狀態(tài)欄)
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 設(shè)置在狀態(tài)行顯示的信息
set foldenable " 開(kāi)始折疊
set foldmethod=syntax " 設(shè)置語(yǔ)法折疊
set foldcolumn=0 " 設(shè)置折疊區(qū)域的寬度
setlocal foldlevel=1 " 設(shè)置折疊層數(shù)為
" set foldclose=all " 設(shè)置為自動(dòng)關(guān)閉折疊
" nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
" 用空格鍵來(lái)開(kāi)關(guān)折疊
set nocompatible " 去掉有關(guān)vi一致性模式,避免以前版本的bug和局限"
set guifont=Luxi/ Mono/ 9 " 設(shè)置字體驮肉,字體名稱(chēng)和字號(hào)"
filetype on " 檢測(cè)文件的類(lèi)型"
set history=1000 " 記錄歷史的行數(shù)"
set background=dark " 背景使用黑色"
syntax on " 語(yǔ)法高亮度顯示
set autoindent " vim使用自動(dòng)對(duì)齊熏矿,也就是把當(dāng)前行的對(duì)齊格式應(yīng)用到下一行(自動(dòng)縮進(jìn))"
set cindent " (cindent是特別針對(duì) C語(yǔ)言語(yǔ)法自動(dòng)縮進(jìn))"
set smartindent " 依據(jù)上面的對(duì)齊格式,智能的選擇對(duì)齊方式离钝,對(duì)于類(lèi)似C語(yǔ)言編寫(xiě)上有用"
set tabstop=4 " 設(shè)置tab鍵為4個(gè)空格"
set shiftwidth =4 " 設(shè)置當(dāng)行之間交錯(cuò)時(shí)使用4個(gè)空格"
set ai! " 設(shè)置自動(dòng)縮進(jìn)"
colorscheme molokai " 設(shè)定配色方案
set showmatch " 設(shè)置匹配模式票编,類(lèi)似當(dāng)輸入一個(gè)左括號(hào)時(shí)會(huì)匹配相應(yīng)的右括號(hào)"
set guioptions-=T " 去除vim的GUI版本中得toolbar"
set vb t_vb= " 當(dāng)vim進(jìn)行編輯時(shí),如果命令錯(cuò)誤卵渴,會(huì)發(fā)出警報(bào)慧域,該設(shè)置去掉警報(bào)"
set ruler " 在編輯過(guò)程中,在右下角顯示光標(biāo)位置的狀態(tài)行"
set nohls " 默認(rèn)情況下浪读,尋找匹配是高亮度顯示昔榴,該設(shè)置關(guān)閉高亮顯示"
set incsearch " 在程序中查詢(xún)一單詞辛藻,自動(dòng)匹配單詞的位置;如查詢(xún)desk單詞互订,當(dāng)輸?shù)?d時(shí)吱肌,會(huì)自動(dòng)找到第一個(gè)d開(kāi)頭的單詞,當(dāng)輸入到/de時(shí)仰禽,會(huì)自動(dòng)找到第一個(gè)以ds開(kāi)頭的單詞氮墨,以此類(lèi)推,進(jìn)行查找吐葵;當(dāng)找到要匹配的單詞時(shí)规揪,別忘記回車(chē)"
set backspace=2 " 設(shè)置退格鍵可用"
vim中切換模式時(shí)顯示不同的光標(biāo)形狀(放置在家目錄中的.vimrc文件中即可):
if has("autocmd")
au VimEnter,InsertLeave * silent execute '!echo -ne "\e[2 q"' | redraw!
au InsertEnter,InsertChange *
\ if v:insertmode == 'i' |
\ silent execute '!echo -ne "\e[6 q"' | redraw! |
\ elseif v:insertmode == 'r' |
\ silent execute '!echo -ne "\e[4 q"' | redraw! |
\ endif
au VimLeave * silent execute '!echo -ne "\e[ q"' | redraw!
endif
最后分享個(gè)不錯(cuò)的VIM思維導(dǎo)圖概覽
會(huì)用這些功能就夠了