一、進入vi的命令
vi filename :打開或新建文件,并將光標置于第一行首
vi +n filename :打開文件,并將光標置于第n行首
vi + filename :打開文件,并將光標置于最后一行首
vi +/pattern filename:打開文件,并將光標置于第一個與pattern匹配的串處
vi -r filename :在上次正用vi編輯時發(fā)生系統(tǒng)崩潰,恢復filename
vi filename....filename :打開多個文件,依次進行編輯
二、移動光標類命令
h :光標左移一個字符
l :光標右移一個字符
space:光標右移一個字符
Backspace:光標左移一個字符
k或Ctrl+p:光標上移一行
j或Ctrl+n :光標下移一行
Enter :光標下移一行
w或W :光標右移一個字至字首
b或B :光標左移一個字至字首
e或E :光標右移一個字至字尾
) :光標移至句尾
( :光標移至句首
}:光標移至段落開頭
{:光標移至段落結尾
nG:光標移至第n行首
n+:光標下移n行
n-:光標上移n行
n$:光標移至第n行尾
H :光標移至屏幕頂行
M :光標移至屏幕中間行
L :光標移至屏幕最后行
0:(注意是數(shù)字零)光標移至當前行首
$:光標移至當前行尾
三、屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
四、插入文本類命令
i :在光標前
I :在當前行首
a:光標后
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字符
R:替換當前字符及其后的字符,直至按ESC鍵
s:從當前光標位置處開始,以輸入的文本替代指定數(shù)目的字符
S:刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW:修改指定數(shù)目的字
nCC:修改指定數(shù)目的行
五、刪除命令
ndw或ndW:刪除光標處開始及其后的n-1個字
do:刪至行首
d$:刪至行尾
ndd:刪除當前行及其后n-1行
x或X:刪除一個字符,x刪除光標后的,而X刪除光標前的
Ctrl+u:刪除輸入方式下所輸入的文本
六、搜索及替換命令
/pattern:從光標開始處向文件尾搜索pattern
?pattern:從光標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
:s/p1/p2/g:將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換#### vim的翻頁
整頁翻頁 ctrl-f ctrl-b (f就是forword b就是backward)T
翻半頁ctrl-d ctlr-ud=down u=up
滾一行ctrl-e ctrl-y
zz 讓光標所雜的行居屏幕中央zt 讓光標所雜的行居屏幕最上一行 t=topzb 讓光標所雜的行居屏幕最下一行 b=bottom
多行注釋:
- 進入命令行模式,按ctrl + v進入 visual block模式,然后按j, 或者k選中多行,把需要注釋的行標記起來
- 按大寫字母I,再插入注釋符,例如//
- 按esc鍵就會全部注釋了
取消多行注釋:
- 進入命令行模式,按ctrl + v進入 visual block模式,按字母l橫向選中列的個數(shù),例如 // 需要選中2列
- 按字母j,或者k選中注釋符號
- 按d鍵就可全部取消注釋
- vim file
// 新建或打開file - i : 插入內(nèi)容
- dd : 刪除一行
- ECS : 回到正常模式
- :set : number顯示行號
- y行數(shù) : 復制幾行
- yy : 復制當前行
- p : 粘貼
- u : 撤銷
- / #G : 跳到#行



刪除操作(命令模式使用)
x刪除光標處的單個字符
dd刪除光標所在行
dw刪除當前字符到單詞尾包括空格的所有字符
、#x例如3x刪除光標處向右的三個字符
、#dd例如3dd從當前行開始向下刪除三行文本
撤銷操作
u命令取消最近一次的操作,可以使用多次來恢復原有的操作
U取消所有操作
Ctrl+R可以恢復對
復制操作
yy命令復制當前整行的內(nèi)容到vi緩沖區(qū)
yw復制當前光標所在位置到單詞尾字符的內(nèi)容到vi緩存區(qū),相當于復制一個單詞
y$復制光標所在位置到行尾內(nèi)容到緩存區(qū)
y^復制光標所在位置到行首內(nèi)容到緩存區(qū)、#yy例如:5yy就是復制5行、#yw例如:2yw就是
vim 配置
g clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
分割布局

使用:sv <filename>命令打開一個文件,你可以縱向分割布局(新文件會在當前文件下方界面打開),使用相反的命令:vs <filename>, 你可以得到橫向分割布局(新文件會在當前文件右側界面打開)
記得在輸入完:sv
后,利用tab補全功能,快速查找文件。
你還可以指定屏幕上可以進行分割布局的區(qū)域,只要在.vimrc
文件中添加下面的代碼即可:
set splitbelow
set splitright
想要不使用鼠標就切換分割布局嗎?只要將下面的代碼添加到.vimrc
文件中,你就可以通過快捷組合鍵進行切換。
"split navigations
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
組合快捷鍵:
Ctrl-j 切換到下方的分割窗口
Ctrl-k 切換到上方的分割窗口
Ctrl-l 切換到右側的分割窗口
Ctrl-h 切換到左側的分割窗口
#### 緩沖區(qū)(Buffers)
雖然Vim支持tab操作,仍有很多人更喜歡緩沖區(qū)和分割布局。你可以把緩沖區(qū)想象成最近打開的一個文件。Vim提供了方便訪問近期緩沖區(qū)的方式,只需要輸入:b <buffer name or number>,就可以切換到一個已經(jīng)開啟的緩沖區(qū)(此處也可使用自動補全功能)。你還可以通過ls命令查看所有的緩沖區(qū)。
在:ls命令輸出的最后,Vim會提示“敲擊Enter繼續(xù)查看”,這時你可以直接輸入:b <buffer name>,立即選擇緩沖區(qū)。這樣可以省掉一個按鍵操作,也不必去記憶緩沖區(qū)的名字。
#### 代碼折疊(Code Folding)
大多數(shù)“現(xiàn)代”集成開發(fā)環(huán)境(IDE)都提供對方法(methods)或類(classes)進行折疊的手段,只顯示類或方法的定義部分,而不是全部的代碼。
你可以在.vimrc
中添加下面的代碼開啟該功能:
" Enable folding
set foldmethod=indent
set foldlevel=99
這樣就可以實現(xiàn),但是你必須手動輸入za來折疊(和取消折疊)。使用空格鍵會是更好的選擇。所以在你的配置文件中加上這一行命令吧:
" Enable folding with the spacebar
nnoremap <space> za
現(xiàn)在你可以輕松地隱藏掉那些當前工作時不需要關注的代碼了。
#### E21: 不能修改,因為選項 'modifiable' 是關的
使用vi的時候不能編輯,提示 “不能修改,因為選項 "modifiable"是關的 ”,輸入命令 :set modifiable 回車就可以繼續(xù)編輯
文件命名
:w newfile #將編輯的內(nèi)容寫入 newfile 文件,保持原有文件的內(nèi)容不變
:f newfile #將當前文件重命名為 newfile