以字爲單位的移動
h 向左移動一個字
j 向下移動一行
k 向上
l 向右
這四個鍵在右手最容易碰到幾個位置,最爲常用。
以詞爲單位的移動
w 下一個word w(ord)
W 下一個word(跳過標點)
b 前一個word b(ackward)
B 前一個word(跳過標點)
e 跳到當前word的尾端 e(nd)
行移動
0 跳到當前行的開頭 - ^ 跳到當前行第一個非空字符 - $ 跳到行尾
助記:0(第0個字符), ^ 和 $ 含義同正則表達式
段落移動
- { 上一段(以空白行分隔) - } 下一段(以空白行分隔) - % 跳到當前對應的括號上(適用各種配對符號)
跳躍移動
/xxxx 搜索xxxx,然後可以用 n 下一個, N 上一個移動 - # 向前搜索光標當前所在的字 - * 向後搜索光標當前所在的字
fx 在當前行移動到光標之後第一個字符x的位置 f(ind)x
gd 跳到光標所在位置詞(word)的定義位置 g(o)d(efine)
gg 到文檔頂部
G 到文檔底部
:x 跳到第x行(x是行號)
ctrl+d 向下翻頁 d(down)
ctrl+u 向上翻頁 u(p)
基本編輯
修改
i 在光標當前位置向前插入 i(nsert)
I 在本行第一個字符前插入
a 在光標當前位置向後插入 a(fter)
A 在本行末尾插入
o 向下插入一行
O 向上插入一行
:w 保存
:q 退出
:wq 保存並退出
刪除
x 刪除當前字符
dd 刪除當前行 d(elete)
dw 刪除當前光標下的詞 d(elete)w(ord)
複製粘貼
yy 複製當前行 y(ank)
yw 複製當前光標下的詞 y(ank)w(ord)
p 粘貼 p(aste)
P 粘貼在當前位置之前
進階操作
限於篇幅,在這裏我僅介紹下我非常常用的幾個操作。
重複操作
因爲VIM所有的操作都是原子化的,所以把這些操作程序化就非常簡單了:
5w 相當於按五次 w 鍵;
6j 下移6行,相當於按六次j;
3J 大寫J,本來是將下一行與當前行合併,加上數量,就是重複操作3次;
6dw 和 d6w 結果是一樣,就是刪除6個word; - 剩下的無數情況,自己類推吧。
高效編輯
di" 光標在”“之間,則刪除”“之間的內容
yi( 光標在()之間,則複製()之間的內容
vi[ 光標在
以上三種可以自由組合搭配,效率奇高,i(nner)
dtx 刪除字符直到遇見光標之後的第一個 x 字符
ytx 複製字符直到遇見光標之後的第一個 x 字符
標記和宏(macro)
ma 將當前位置標記爲a,26個字母均可做標記, mb 、 mc 等等;
'a 跳轉到a標記的位置; - 這是一組很好的文檔內標記方法,在文檔中跳躍編輯時很有用;
qa 將之後的所有鍵盤操作錄製下來,直到再次在命令模式按下 q ,並存儲在 a 中;
@a 執行剛剛記錄在 a 裏面的鍵盤操作;
@@ 執行上一次的macro操作;
宏操作是VIM最爲神奇的操作之一,需要慢慢體會其強大之處;
VIM的基本操作,可以挖掘的東西非常多,不僅僅需要記憶,更需要自己去探索總結,熟練之後,效率會大幅度提升。後面會給出一些參考鏈接。
插件的安裝使用
安裝 Vundle(管理插件的工具)
1 | git clone https: //github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim |
安裝插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //打開vim的配置 vim ~/.vimrc //配置插件以及安裝 set nocompatible filetype off map <C-n> :NERDTreeToggle<CR> set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'https://github.com/kien/ctrlp.vim.git' Plugin 'https://github.com/scrooloose/nerdtree.git' Plugin 'https://github.com/aperezdc/vim-template.git' call vundle# end () filetype plugin indent on //配置完畢後命令行執行 vim +PluginInstall +qall |