VIM 經常使用技巧 命令html
參考:http://www.cnblogs.com/tzhangofseu/archive/2011/12/17/2290955.html
linux
文本信息配置正則表達式
set nu(寫入配置文件.vimrc中) 顯示行號。
ctrl-g(正常模式下使用命令) 顯示文件信息和當前行。
statusline.vim(插件) 增長底部狀態欄。shell
代碼縮進配置vim
filetype on(寫入配置文件.vimrc中) 使vim對文件類型敏感。
autocmd FileType c,cpp,h :setlocal cindent cinoptions=:0,g0,t0(寫入配置文件.vimrc中) 設置c縮進風格,具體詳情參見:h cinoptions-values。
autocmd FileType c,cpp,h :setlocal et sta sw=4 sts=4 tabstop=4(寫入配置文件.vimrc中) 設置一次縮進的距離是4個空格。
=(正常模式或者可視模式下使用命令) 按照縮進風格排版代碼。
<(可視模式下使用命令) 向左縮進一級。
>(可視模式下使用命令) 向右縮進一級。緩存
語法高亮編輯器
filetype plugin on(寫入配置文件.vimrc中) 一般安裝的vim中已經加入了各類語言的語法高亮插件,咱們只須要打開文件類型相關的插件就能夠了。spa
快速定位.net
gd(正常模式下使用命令) 跳轉到局部變量定義處。
gD(正常模式下使用命令) 跳轉到全局標量定義處。
*(正常模式下使用命令) 搜索並跳到下一個光標所在的單詞。
g*(正常模式下使用命令) 功能接近*,可是查找的目標不帶\<和\>單詞分界符號。
#(正常模式下使用命令) 搜索並跳到上一個光標所在的單詞。
g#(正常模式下使用命令) 功能接近#,可是查找的目標不帶\<和\>單詞分界符號。插件
標記位置
m{a-zA-Z0-9} (正常模式下使用命令) 在當前位置製做一個標記,標記名字能夠使用a-z或者A-Z之間的任意字符,例如輸入ma,就是將當前位置標記爲a標記。注意a-z爲單文件標記,不可跨文件使用,而A-Z0-9爲全局標記,能夠跨文件使用。‘{a-zA-Z0-9} (正常模式下使用命令) 跳轉到本文件的標記上。
:marks [{a-zA-z0-9}] (正常模式下使用命令) 查看指定標記的內容,不寫標記號則查看全部。
:delm {a-zA-z0-9} (正常模式下使用命令) 刪除一個標記。
全文搜索
:vimgrep(正常模式下使用命令) 全文搜索,功能同grep命令,可是支持在vim進行多文件跳轉定位。
使用方法:vimgrep 正則表達式 文件。文件支持通配符,例如*.c表明全部的.c文件。若是但願遞歸搜索,能夠使用**/*,表示搜索全部的文件。
:cl 列舉結果
:cc(正常模式下使用命令) 當前結果
:cn(正常模式下使用命令) 下一個結果
:cp(正常模式下使用命令) 上一個結果
:cw(正常模式下使用命令) 從新打開搜索結果窗口
多文件編輯
vim f1 f2 …… fn(在shell下使用命令) 打開多個文件。
:e 文件名(正常模式下使用命令) 在vim中打開新文件。
:ls(正常模式下使用命令) 全部打開文件列表。
:bn(正常模式下使用命令) 到下一個文件。
:bp(正常模式下使用命令) 到上一個文件。
:b# 或 ctrl-6(正常模式下使用命令) 到最近的前一個文件。
set autowriteall(寫入配置文件.vimrc中) 若是討厭每次打開新文件,vim喋喋不休的要求你保存,那麼能夠設置自動保存。
多窗口編輯
:sp 文件名(正常模式下使用命令) 橫向拆分窗口(多行窗口)。
:vsp 文件名(正常模式下使用命令) 縱向拆分窗口(多列窗口)。
ctrl-w h(正常模式下使用命令) 將光標移動到左一個窗口。
ctrl-w j(正常模式下使用命令) 將光標移動到下一個窗口。
ctrl-w k(正常模式下使用命令) 將光標移動到上一個窗口。
ctrl-w l(正常模式下使用命令) 將光標移動到右一個窗口。
ctrl-w +(正常模式下使用命令) 當前窗口尺寸變大。
ctrl-w -(正常模式下使用命令) 當前窗口尺寸變小。
ctrl-w o(正常模式下使用命令) 只顯示當前窗口。
補全
ctrl-p(插入模式下使用命令) 跳出補全菜單。
ctrl-n(在跳出補全菜單後) 下一個結果。
ctrl-p(在跳出補全菜單後) 上一個結果。
ctrl-y(在跳出補全菜單後) 選擇當前結果。
ctrl-x ctrl-f(插入模式下使用命令) 文件名補全。
ctrl-x ctrl-i(插入模式下使用命令) 包含的頭文件。
ctrl-x ctrl-](插入模式下使用命令) ctags(將在下文中介紹)符號補全。
ctrl-x ctrl-o(插入模式下使用命令) omni補全,須要設置omnifunc變量。
vim其餘命令 (參考vi(vim)教程)
打開文件、保存、關閉文件:
vi filename //打開filename文件
:w //保存文件
:w vpser.net //保存至vpser.net文件
:q //退出編輯器,若是文件已修改請使用下面的命令
:q! //退出編輯器,且不保存
:wq //退出編輯器,且保存文件
插入文本或行:
a //在當前光標位置的右邊添加文本
i //在當前光標位置的左邊添加文本
A //在當前行的末尾位置添加文本
I //在當前行的開始處添加文本(非空字符的行首)
O //在當前行的上面新建一行
o //在當前行的下面新建一行
R //替換(覆蓋)當前光標位置及後面的若干文本
J //合併光標所在行及下一行爲一行(依然在命令模式)
移動光標:
使用上下左右方向鍵
命令模式下:h 向左、j 向下 、k 向上、l 向右。
空格鍵 向右、Backspace 向左、Enter 移動到下一行首、- 移動到上一行首。
刪除:
x //刪除當前字符
nx //刪除從光標開始的n個字符
dd //刪除當前行
ndd //向下刪除當前行在內的n行
u //撤銷上一步操做
U //撤銷對當前行的全部操做
搜索:
/vpser //向光標下搜索vpser字符串
?vpser //向光標上搜索vpser字符串
n //向下搜索前一個搜素動做
N //向上搜索前一個搜索動做
跳轉:
n+ //向下跳n行
n- //向上跳n行
nG //跳到行號爲n的行
G //跳至文件的底部
設置行號:
:set nu //顯示行號
:set nonu //取消顯示行號
複製:
yy //將當前行復制到緩存區,也能夠用 "ayy 複製,"a 爲緩衝區,a也能夠替換爲a到z的任意字母,能夠完成多個複製任務。
nyy //將當前行向下n行復制到緩衝區,也能夠用 "anyy 複製,"a 爲緩衝區,a也能夠替換爲a到z的任意字母,能夠完成多個複製任務。
yw //複製從光標開始到詞尾的字符。
nyw //複製從光標開始的n個單詞。
y^ //複製從光標到行首的內容。
y$ //複製從光標到行尾的內容。
p //粘貼剪切板裏的內容在光標後,若是使用了前面的自定義緩衝區,建議使用"ap 進行粘貼。
P //粘貼剪切板裏的內容在光標前,若是使用了前面的自定義緩衝區,建議使用"aP 進行粘貼。
替換:
:s/old/new //用new替換行中首次出現的old
:s/old/new/g //用new替換行中全部的old
:n,m s/old/new/g //用new替換從n到m行裏全部的old
:%s/old/new/g //用new替換當前文件裏全部的old
編輯其餘資源:
:e otherfilename //編輯文件名爲otherfilename的文件。
修改文件格式:
:set fileformat=unix //將文件修改成unix格式,如win下面的文本文件在linux下會出現^M。