vim 使用

vim有三種模式:輸入模式,命令模式,底行模式,使用esc進入命令模式,在命令模式下按英文的冒號,進入底行模式;命令行模式下按i進入輸入模式。vim編輯文件是將文件內容複製到緩衝區顯示在屏幕上。javascript

vim的啓動php

輸入vim命令後,便進入全屏幕編輯環境,此時的狀態爲命令模式。

vim            進入vim的一個臨時緩衝區,光標定位在該緩衝區第1行第1列的位置上
vim file1        若是file1文件不存在,將創建此文件;如該文件存在,則將其拷貝到一個臨時緩衝區。光標定位在該緩衝區第1行第1列的位置上
vim + file1        (有+號)光標定位在文件最後1行第1列的位置上。若是file1文件不存在,將創建此文件;如該文件存在,則將其拷貝到一個臨時緩衝區
vim +N file1(N:爲數字)        光標定位在文件第N行第1列的位置上。若是file1文件不存在,將創建此文件;如該文件存在,則將其拷貝到一個臨時緩衝區
vim +/string file1        若是file1文件不存在將創建此文件;如該文件存在則將其拷貝到一個臨時緩衝區。光標定位在文件中第一次出現字符串string的行首位置
vim file1 file2..    依次編輯文件
vim -r file        上次使用vim時系統崩潰,則恢復文件
vim -R file        以只讀方式打開文件,但能夠強制保存
vim -M file        以只讀的方式打開文件,不能夠強制保存
vimdiff file1 file2        比較編輯兩個不一樣的文件
vim -x file        編輯的文件加密,會提示輸入密碼
vim -c cmd file    在打開文件前,先執行指定的命令
vim dir/        使用 netrw 打開目錄選擇文件編輯
vim -b file.bin    告訴 vim 編輯的是二進制文件,區別是不自動在文件尾加換行符(0x0a)
vim a.tar.gz
vim a.zip

退出vim(底行模式(last line mode))css

建議在退出vim前,先按ESC鍵,以確保當前vim的狀態爲命令方式,而後再鍵入「:」(冒號),輸入下列命令,退出vim

:x            保存後退出
ZZ            保存後退出
ZQ            強制退出,不保存
:saveas path_file    另存爲 path_file
:w            將緩衝區內容寫入文件,即將編輯的內容寫入原文件中
:w filename        存入指定文件
:q            將編輯緩衝區的內容寫入文件,則新的內容就替代了原始文件。這時並無退出vim,必須進一步輸入下述命令才能退出vim
:q!            強制退出;使被更新的內容不寫回文件中。僅鍵入命令:q時,如vim發現文本內容已被更改,將提示用戶使用「 :q 」命令退出
:wq            先執行w,後執行q
:qa            多屏時所有退出

vimrc配置設置html

在啓動vim時,當前用戶根目錄下的.vimrc文件會被自動讀取,該文件能夠包含一些設置和腳本,其註釋是使用英文的雙引號。因此,通常狀況下把.vimrc文件建立在當前用戶的根目錄下比較方便,這個文件有些linux發行版中沒有,須要本身建立,建立的命令爲 $vim ~/.vimrc    ;or /etc/vimrc ;設置完後,進入底行模式,輸入「 :x 」保存退出。全部的這些設置均可以在編輯時在底行模式中改變。查詢系統是否安裝了 vim-enhanced 包,沒有安裝軟件這些配置將不起做用, $rpm –qa vim-enhanced。


個人配置

set nocompatible
set nu
set completeopt=longest,menu
set nobackup
set fileformat=unix
set history=1000
set background=dark
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions-=T
set vb t_vb=
set ruler
set nohls
set incsearch
set showcmd
set statusline+=%f            "在狀態欄顯示文件名

set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=utf-8
set fileencoding=utf-8

colorscheme desert
syntax on
"set cindent
"set encoding=prc
"set mouse=a
"set mouse=v
"set selection=exclusive
"set selectmode=mouse,key

helptags ~/.vim/doc
filetype plugin indent on

"自動補全括號
"iab ( ()
"iab { {}

:vmap <F5> :s#^#//#<CR>        "註釋一行
:vmap <F6> :s#^//##<CR>        "取消註釋

:map <F7> :set nu<CR>        "添加行號
:map <F8> :set nonu<CR>

:map <F9> :set paste<CR>        "粘貼模式
:map <F10> :set nopaste<CR>

nnoremap <leader>1 :set filetype=xhtml<CR>          "解決 html css 中縮進問題
nnoremap <leader>2 :set filetype=css<CR>  
nnoremap <leader>3 :set filetype=javascript<CR>  
nnoremap <leader>4 :set filetype=php<CR>

let g:html_indent_inctags = "body,head,tbody"         " 縮進body head
let g:html_indent_script1 = "inc"        "縮進<script>標籤
let g:html_indent_style1 = "inc"        "縮進<style>標籤
au FileType html setlocal autoindent indentexpr=        "取消vim對html標記自動產生的縮進,但打開自動縮進選項

:command! -nargs=1 Rename let tpname = expand('%:t') | saveas <args> | edit <args> | call delete(expand(tpname))        "重命名文件 Rename filename(自定義命令首字母要大寫)

正則表達式java

$                    匹配行尾
^                    匹配行首
\<                    匹配單詞詞首
\>                    匹配單詞詞尾

\|                    或操做符
\&                    與操做符

.                    匹配任意一個字符
*                    匹配0-任意個
\+                    匹配1-任意個
\?                    匹配0-1個
\{n,m}                匹配n-m個
\{-n,m}                與\{n,m}同樣,儘量少次數地重複
\{n}                    匹配n個
\{n,}                    匹配n-任意個
\{,m}                    匹配0-m個
\_.                    匹配包含換行在內的全部字符
\{-}                    表示前一個字符可出現零次或屢次,但在整個正則表達式能夠匹配成功的前提下,匹配的字符數越少越好
\=                    匹配一個無關緊要的項
\_s                    匹配空格或斷行
\_[]

\*                    匹配 * 字符
\.                    匹配 . 字符
\/                    匹配 / 字符
\\                    匹配 \ 字符
\[                    匹配 [ 字符


[abc]                    匹配方括號中的任意一個字符。可使用-表示字符範圍,如[a-z0-9]匹配小寫字母和阿拉伯數字
[^abc]                    在方括號內開頭使用^符號,表示匹配除方括號中字符以外的任意字符
\d                    匹配阿拉伯數字,等同於[0-9]
\D                    匹配阿拉伯數字以外的任意字符,等同於[^0-9]
\x                    匹配十六進制數字,等同於[0-9A-Fa-f]
\X                    匹配十六進制數字,等同於[^0-9A-Fa-f]
\w                    匹配單詞字母,等同於[0-9A-Za-z_]
\W                    匹配單詞字母以外的任意字符,等同於[^0-9A-Za-z_]
*\t                    匹配 <TAB> 字符
\s                    匹配空白字符,等同於[ \t]
\S                    匹配非空白字符,等同於[^ \t]
\a                    全部的字母字符. 等同於[a-zA-Z]
\l                    小寫字母 [a-z]
\L                    非小寫字母 [^a-z]
\u                    大寫字母 [A-Z]
\U                    非大寫字母 [^A-Z]

替換變量:在正規表達式中使用 \( 和 \) 符號括起正規表達式,便可在後面使用\1、\2等變量來訪問 \( 和 \) 中的內容。

函數式
:s/替換字符串/\=函數式
在函數式中可使用 submatch(1)、submatch(2) 等來引用 \1、\2 等的內容,而submatch(0)能夠引用匹配的整個內容。


實例:
:%s/\s\+$//                    去掉全部的行尾空格
:%s/\(\s*\n\)\+/\r/            去掉全部的空白行
:%s#\s*//.*##                去掉全部的「//」註釋,即去掉全部的//
:%s#\s*/\*\_.\{-}\*/\s*##g        去掉全部的「/* */」註釋
:g/^\s*$/d                    刪除只有空白的行
:s/\(\w\+\)\s\+\(\w\+\)/\2\t\1        將 data1 data2 修改成 data2 data1
:%s/\(\w\+\), \(\w\+\)/\2 \1/        將 Doe, John 修改成 John Doe
:%s/\<id\>/\=line(".")            將各行的 id 字符串替換爲行號
:%s/\(^\<\w\+\>\)/\=(line(".")-10) .".". submatch(1)       將每行開頭的單詞替換爲(行號-10).單詞的格式,如第11行的word替換成1. word
:/OB/+1,$!sort                排序 
:n,m sort                    排序 n,m 行
:%s/<[^>;]*>;//g                去掉html的的標記


轉義字符                    彷佛 vim 中的轉義符與其它的工具備些差別

\r                         匹配 <CR> 鍵
\n                         匹配行末

編輯模式python

編輯模式


ctrl  p                    自動補全,向上搜索匹配詞,在 vim 打開的全部文檔中查找,不斷輸入命令會循環查找
ctrl  x  f                    補全文件名
ctrl  x  l                    自動補齊正行文本,僅在本窗口出現的文檔中匹配

命令模式linux

h            向左移動一個字符
l            向右移動一個字符
j            向下移動一行
k            向上移動一行
w            將光標移到下一個單詞的開頭
W            移到下一個字的開頭,忽略標點符號
b            光標回到上個 word 的第一個字母
fa            移到下一個 a 字符處
nfa
Fa
t,            移到逗號前的字符
Ta        
B            移到前一個字的開頭,忽略標點符號 BACK
e            將光標移到下一個單詞的結尾
E            移到下一個字的結尾,忽略標點符號 END
J                合併光標所在行及下一行爲一行(依然在命令模式)
gg            光標回到文件首部
ngg            跳到第n行
GG            光標到文件最後一行首部
gf            打開當前光標所在word的文件,沒有這個文件則建立他。注意要先保存所做的更改
0            到本行頭
$            到文行末
n+            光標下移n行
n-            光標上移n行
H            光標移動到屏幕頂行
M            光標移動到屏幕中間
L            光標移動到屏幕最後一行
zt            把當前行置於屏幕頂端
z.            把當前行至於屏幕中間
zb            把當前行至於屏幕底端
''                   移動光標到上一個標記處
'.                移動光標到上一次的修改行
`.              移動光標到上一次的修改點
50%            光標置於文件中間
ctrl  J        跳轉到當前光標所在單詞對應的主題
ctrl  O        回到前一個光標的位置
[[            光標移到文件開始位置
]]            光標移到文件結尾
(            光標移動到句首,以一個空白行分隔判斷段落
)            光標移動到句尾
{            光標移動到段落開頭,以一個空白行判斷段落
}            光標移動到段落結尾


gd            跳轉到局部變量的定義處;
gD            跳轉到全局變量的定義處,從當前文件開頭開始搜索;
g;            上一個修改過的地方;
g,            下一個修改過的地方;
[[            跳轉到上一個函數塊開始,須要有單獨一行的{。    
]]            跳轉到下一個函數塊開始,須要有單獨一行的{。
[]            跳轉到上一個函數塊結束,須要有單獨一行的}。
][            跳轉到下一個函數塊結束,須要有單獨一行的}。
[{            跳轉到當前塊開始處;
]}            跳轉到當前塊結束處;
[/            跳轉到當前註釋塊開始處;
]/            跳轉到當前註釋塊結束處;
%            不只能移動到匹配的(),{}或[]上,並且能在#if,#else, #endif之間跳躍。


%            括號匹配,移動到匹配的括號上,光標必須在括號上,匹配括號移動,包括 「 (, {, [ 」
*            搜索匹配光標當前所在的單詞,移動光標到下一個單詞
#            搜索匹配光標當前所在的單詞,移動光標到上一個單詞
nfx            在當前行查找光標後第n個x(通常直接fx)

模式轉換
a                在當前光標位置的右邊添加文本
A                在當前行的末尾位置添加文本
i                在當前光標位置的左邊添加文本
I                在當前行的開始處添加文本(非空字符的行首)
o                在當前行的下面新建一行
O               在當前行的上面新建一行
R                替換(覆蓋)當前光標位置及後面的若干文本,至關於插入
s            刪除當前的字符後進入輸入模式

cw            刪除當前word並進入輸入模式
ncw             刪除當前word開始的n個word後進入輸入模式
cc            刪除當前行後進入輸入模式
ncc            刪除當前行開始的n行後進入輸入模式


複製 刪除(剪切) 粘貼 恢復

u                撤銷
ctrl  r          恢復,只對u有效
U                撤銷對光標所在那一行所作的修改
x                刪除光標所在的字符
nx               刪除從光標開始的n個字符
X            刪除光標以前(其左邊)的一個字符
r                修改光標所在的字符,按一下,再按想輸入的字符
J                合併兩行

d            刪除可視區域的內容
dd               刪除當前行
dfa            刪除當前字符直到第一個a字符
dt"            刪除全部的內容,直到遇到雙引號
ndd              向下刪除當前行在內的n行
dw            刪除一個詞和它後面的空格,將光標放置到該詞的開頭
ndw            刪除光標及光標後的n個word
d^            刪除行中光標前面的字符
d$            刪除行中光標及其右邊的字符
d0            同d^
D            同d$    
dG            刪除包含當前行到文件尾的內容
ggdG            刪除整個文件

nyl            複製當前n個字符
y2fa            複製當前字符直到第二個a字符
y0            複製當前光標到行首的內容
y$            複製當前光標到行末的內容
yG            複製當前行到最後一行
yy               當前行復制到緩存區,也能夠用   ayy 複製,  a 爲緩衝區,a也能夠替換爲a到z的任意字母,能夠完成多個複製任務
yw            複製當前光標處的單詞
nyy              將當前行向下n行復制到緩衝區,也能夠用   anyy 複製,  a 緩衝區,a也能夠替換爲a到z的任意字母,能夠完成多個複製任務
yw               複製從光標開始到詞尾的字符            
nyw             複製從光標開始的n個單詞
y^               複製從光標到行首的內容
y$               複製從光標到行尾的內容

guw            光標下的單詞變爲小寫
gUw            光標下的單詞變爲大寫
~            大小寫轉換

xp            左右交換光標處兩字符的位置
p            粘貼到當前光標後面
P            粘貼到當前光標前面

ga            顯示光標下的字符在當前使用的encoding下的內碼

宏
.            重複上一個編輯動做
qx            記錄底行模式下輸入的命令,並列表呈現出來
q            中止錄製
@x            播放宏a
@@            播放最近的宏

zf            建立摺疊的命令(需加方向鍵),能夠在一個可視區域上使用該命令
zd            刪除當前行的摺疊
zD            刪除當前行的摺疊
zfap            摺疊光標所在的段
zo            打開摺疊的文本,空格也能夠
zc            收起摺疊
za            打開/關閉當前摺疊
zr            打開嵌套的折行
zm            收起嵌套的折行
zR(zO)        打開全部折行
zM(zC)        收起全部折行
zj            跳到下一個摺疊處
zk            跳到上一個摺疊處
zi            enable/disable fold

=            使用v選定代碼後,按'='會自動縮進代碼
>                       輸入此命令則光標所在行向右移動一個tab
>            使用v選定代碼後,按'>'會將代碼總體右移
5>>                     輸入此命令將光標在內的5行向右移動一個tab

v            可視模式,單個字符
V                可視模式,行,能夠選擇連續的多個行
ctrl  v           可視模式,列

ctrl  l            刷新屏幕

自動補全
ctrl   p            向上搜索匹配詞    
ctrl   n            向下

移動
ctrl  e            光標向下卷一行
ctrl  y            光標向上卷一行

翻頁
ctrl  u            光標向下卷半頁
ctrl  d            光標向上卷半頁
ctrl  f            光標向下卷一頁
ctrl  b            光標向上卷一頁

ctrl  q            掛起時使用
ctrl  z        暫時掛到後臺

ctrl  ]        跳到函數定義的地方
ctrl  g        顯示文件名,當前光標所在行的行號,總的行數,以及當前行所在文件中的百分比和當前光標所在的列的信息,同':f'

ctrl  w             窗口切換,連按兩下,按方向鍵
ctrl  w  s        上下分割當前打開的文件
ctrl  w  v        左右分割當前打開的文件
ctrl  w  c        關閉當前窗口
ctrl  w  q        關閉當前窗口,若是隻剩最後一個了,則退出Vim
ctrl  w  h        把光標移到左邊的屏
ctrl  w  H        屏幕向左移動
ctrl  w  j        把光標移到下邊的屏
ctrl  w  J        屏幕向下移動
ctrl  w  k        把光標移到上邊的屏
ctrl  w  K        屏幕向上移動
ctrl  w  l        把光標移到右邊的屏
ctrl  w  L        屏幕向右移動
ctrl  w  =        讓全部的屏都有同樣的高度
ctrl  W  +        要擴大窗口
ctrl  W  -        要縮小窗口

底行模式git

向前操做時不包括當前光標處的字符或word,向後操做時則包含當前

/word                向下搜索word,n和N表示在同一方向重複上次的搜索命令
?word                向上搜索word

底行的正則
^                表示頭(可用'0'代替)
$                 表示尾

跳到某一行
:行號

:e                從新載入,相似刷新,edit
:e!                放棄這次修改,從新載入該文件
:e other_file           編輯filename爲other_filename的文件
:e ++enc=utf8 file    讓vim用utf-8的編碼打開這個文件
:w ++enc=gbk        無論當前文件什麼編碼,把它轉存成gbk編碼
:e ++ff=dos filename        讓vim用dos格式打開這個文件。
:w ++ff=mac filename        以mac格式存儲這個文件。


替換 刪除 複製            vim刪除時會將刪掉的內容複製到剪切板,使用下面語句時建議不使用'/'而使用'#'
:% s/old/new           用new替換每一行中首次出現的old
:% s/old/new/g        用new替換行中全部的old
:% s/old/new/gc        全文替換並讓用戶確認
:% s/\s\+$//        去掉全部的行尾空格,'\s'表示空白字符,'\+'表示匹配一次或屢次,'$'表示匹配到行尾
:%s/\s∗\n\+/\r/        去掉全部的空白行
:%s!\s*//.*!!        去掉全部的「//」註釋
:%s!\s*/\*\_.\{-}\*/\s*!!g        去掉全部的「/* */」註釋
:%s+/<love/>+&+g        徹底匹配"love"的單詞有多少,用本身替換本身計算出出現的次數,用'+'代替'/'
:%s= *$==            將全部行尾多餘的空格刪除
:g/^\s*$/d            將全部不包含字符(空格也不包含)的空行刪除
:#,# s/old/new/gc        //這條命令做用不肯定
:n,m s/old/new/gc        用new替換從n到m行裏全部的old,每替換一次進行提醒
:n,m copy 10            拷貝n到m行到第10行下面。co
:n,m d                刪除n到m行,包含第n行和第m行
:,24y                複製當前光標所在行到24行
:d 12                刪除包含光標所在行在內的12行
:n,m move 10            移動n到m行到10行下面。m    
:s/string/^M/        ^M由 ctrl  V 和 ctrl  M 得到,將字符替換成換行符
:s/string/\r/g        將 string 換爲換行符


:!cmd                執行終端命令
:r !command            將終端命令輸出添加到當前行
:% !command            用終端命令輸出替換當前文件內容

:%!xxd                 將文件轉換爲十六進制, -b 選項轉換爲二進制,不能夠屢次轉換
:%!xxd -r             將十六進制文件轉換爲文本

:w !sudo tee %        以普通用戶身份打開的vim,修改後以root身份保存
:f                顯示文件名,當前光標所在行的行號,總的行數,以及當前行所在文件中的百分比和當前光標所在的列的信息
:f file            生成一個內容爲當前緩衝區的新的file文件,若是以前打開過文檔,則對其不作任何改動。
:X                加密文件


:cat -n filename
:awk ‘{print $1}’ a.txt > b.txt
:bd                移出buffer,會使得當前編輯的文件移出內存,編輯新的爲命令的文件,這樣作意義不大

:sh                   執行shell命令
:exit
:abbr sprt System.out.println        縮寫命令,至關於定義宏
:ab

:r filename            複製指定文件的內容當光標所在處
:vim filename -r        恢復文件
:w! newfilename        另存爲

: 12,24>                      此命令將12行到14行的數據都向右移動一個tab
: 12,24>>                 此命令將12行到14行的數據都向右移動兩個tab


:args                顯示編輯名單中的各個文件名列表
:edit ++enc=gbk        強制使用gbk編碼打開文件,當vim打開文件編碼錯誤時可使用
:map                列出當前已定義的映射
:Sex                水平分割一個窗口,瀏覽文件系統,用enter鍵選擇文件
:Vex                垂直分割一個窗口,瀏覽文件系統
:jumps            列出關於你曾經跳轉過的位置的列表,你最近一個跳轉的位置被特別以一個」>」號標記
:mark a            設置標記a,使用d'a刪除光標到標記的內容,y'a將其複製到剪切版
:marks            列出自定義的標記,包含VIM內部自定義的標識
:only                    只留下當前編輯的窗口,關閉其餘的編輯窗口
:iab ( ()            自動補全括號
:%!nl                要對包含空行的全部行進行編號(全部行以前插入行號^I)
:version            顯示VIM版本信息,包含特性、編譯方式及配置文件目錄
:n1,n2 w! command        將文件中n1行至n2行的內容做爲command的輸入並執行之,若不指定n1,n2,則表示將整個文件內容做爲command的輸入(注意空格)例如  :1,4 w! grep tom
:options            打開一個新窗口, 在該窗口的最開頭的註釋下面是一個選項列表
:autocmd!            刪除以前的自動命令
:runtime! syntax/2html.vim        轉換成 html, 會按照你的顏色配置來轉
:g/^/exec "s/^/".strpart(line(".")." ", 0, 4)        在行首插入行號
:filetype on        偵察文件類型
:filetype plugin on    載入文件類型插件
:filetype indent on    爲特定文件類型載入相關縮進文件


:set all            顯示全部的設置項
:set ai                      設置自動縮進
:set ic                忽略大小寫
:set ignorecase            搜索中忽略大小寫
:set noic            
:set selection=exclusive
:set selectmode=mouse,key    可使用鼠標定位
:set mouse=v            可視模式下啓用鼠標
:set mouse=a            徹底啓用鼠標
:set mouse=                關閉鼠標
:set nocompatible              不兼容 vi ,默認兼容
:set nowrapscan                禁止在搜索到文件兩端時從新搜索
:set hlsearch                  搜索時高亮顯示被找到的文本
:set nohls                取消搜索高亮
:nohl                取消高亮
:set incsearch            即時搜索
:colorscheme desert          顏色設置,vim的配色方案在/usr/share/vim/vim74/colors 中
:set gdefault            行內替換
:set guifont=Courier_new:h14:b:cDEFAULT        設置字體和大小
:set lines=35 columns=118    設置默認窗口大小(圖形)
:set vb t_vb=              置空命令錯誤時的鈴聲的終端代碼
:set wildmenu            加強模式中的命令行自動完成操做
:set tabstop=4               實際的tab即爲4個空格, 而不是缺省的8個
:set softtabstop=4             使得按退格鍵時能夠退回縮進的長度,使用 expandtab 時特別有效
:set smarttab            在行和段開始處使用製表符
:set expandtab               在輸入tab後,vim用恰當的空格來填充這個tab
:set noexpandtab            不要用空格代替製表符
:set sts=4                   設置softtabstop爲4
:set shiftwidth=4            設置自動縮進 4 個空格, 固然要設自動縮進先
:set autoindent            第一行,vim使用自動對起,也就是把當前行的對起格式應用到下一行
:set smartindent              第二行,依據上面的對起格式,智能的選擇對起方式,對於相似C語言編寫上頗有用
:set cindent            按照 c 語言的語法縮進
:set backspace=2
:set textwidth=79
:set ambiwidth=double
:set autowrite            設置自動存盤
:set showcmd            在Vim窗口的右下角顯示一個完整的命令已經完成的部分
:set key=                取消文件加密
:set ai                設置文件起始位置(以光標當前位置爲起始)set noai
:set readonly            設置文件只讀
:set wrap                將超出屏幕行分多行顯示 :set nowrap 關閉換行
:set cursorline            突出顯示當前行
:set nobackup                  覆蓋文件時不備份
:set noswapfile
:set backupcopy=yes            設置備份時的行爲爲覆蓋
:set tags=tags
:set autochdir                 自動切換當前目錄爲當前文件所在的目錄
:set report=0            在使用了底行命令後自動告訴咱們文件的哪一http://facebook.com/行被改變過
:filetype plugin indent on     開啓插件,文件類型檢測,自動縮進
:set noerrorbells              關閉錯誤信息響鈴
:set novisualbell              關閉使用可視響鈴代替呼叫
:set matchtime=2               短暫跳轉到匹配括號的時間
:set magic                     設置魔術
:set hidden                    容許在有未保存的修改時切換緩衝區,此時的修改由 vim 負責保存
:set guioptions-=T             隱藏GUI版本的工具欄
:set guioptions-=m             隱藏菜單欄
:set backspace=indent,eol,start                         不設定在插入狀態沒法用退格鍵和 Delete 鍵刪除回車符
:set cmdheight=1               設定命令行的行數爲 1
:set laststatus=2              顯示狀態欄 (默認值爲 1, 沒法顯示狀態欄)
:set encoding=utf-8        至關於set enc
:set fileencoding=utf-8        至關於set fenc
:set fileencodings=utf-8        至關於set fencs
:set termencoding=utf-8
:set nobomb            去除utf-8的bom
:set bomb
:set bomb?            查看文件是否右bom標記
:set foldenable                開始摺疊
:set foldmethod=syntax         設置語法摺疊
:set foldcolumn=0              設置摺疊區域的寬度
:setlocal foldlevel=1          設置摺疊層數爲1
:set foldclose=all             設置爲自動關閉摺疊
:set ff                顯示當前文件的格式
:set ruler            光標位置打狀態行
set ambiwidth=double        防止特殊符號沒法正常顯示
:set fileformats=unix,dos,mac        添加在配置文件中讓vim自動識別文件格式
:set suffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc            這樣在vim中打開文件時, 按 tab 鍵補齊文件名時它會忽略上述文件
:set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\                       設置在狀態行顯示的信息  
:syntax on/off            色彩支持

Python 文件的通常設置,好比不要 tab 等
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
autocmd FileType python map <F12> :!python %<CR>

設置字典 ~/.vim/dict/文件的路徑
autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict
autocmd filetype css set dictionary=$VIMFILES/dict/css.dict
autocmd filetype php set dictionary=$VIMFILES/dict/php.dict

let b:javascript_fold=1                打開javascript摺疊
let javascript_enable_domhtmlcss=1        打開javascript對dom、html和css的支持
let helptags=$VIMFILES.'/doc'            設定doc文檔目錄

多文件多窗口的操做github

vim -On file1 file2 ...    使用大寫的O參數來垂直分屏,n是數字,表示分紅幾個屏
vim -on file1 file2 ...    使用小寫的o參數來垂直分屏

:sp filename        上下分割,並打開一個新的文件
:vsp filename        左右分割,並打開一個新的文件
:rew                     多個文件時回到首個文件
:n                切換到下一個文件
:N                切換到上一個文件
:bn                
:bp                同時打開不少文件,使用這兩個命令來切換下一個或上一個文件
:split    filename        分割窗口,將會複製文件內容
:vsplit    filename        分割窗口
:new    filename    
:vnew    filename   
:close                關閉當前窗口
:only                    只留下當前編輯的窗口,關閉其餘的編輯窗口
:qa                    所有退出,同qall
:wa                    所有寫入,同wall
:wqa                同wqall
:args                顯示編輯名單中的各個文件名列表
:files buffers ls        列出目前 buffer 中的全部文件

ctrl  w             窗口切換,連按兩下,按方向鍵
ctrl  w  s        上下分割當前打開的文件
ctrl  w  v        左右分割當前打開的文件
ctrl  w  c        關閉當前窗口
ctrl  w  q        關閉當前窗口,若是隻剩最後一個了,則退出Vim
ctrl  w  h        把光標移到左邊的屏
ctrl  w  H        屏幕向左移動
ctrl  w  j        把光標移到下邊的屏
ctrl  w  J        屏幕向下移動
ctrl  w  k        把光標移到上邊的屏
ctrl  w  K        屏幕向上移動
ctrl  w  l        把光標移到右邊的屏
ctrl  w  L        屏幕向右移動
ctrl  w  =        讓全部的屏都有同樣的高度
ctrl  W  +        要擴大窗口
ctrl  W  -        要縮小窗口

窗口分割時,進行切換的按鍵熱鍵須要鏈接兩次,好比從下方窗口移動光標到上方窗口,須要<c-w><c-w>k,很是麻煩,如今重映射爲<c-k>,切換的時候會變得很是方便
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

文檔的摺疊,縮進正則表達式

:set foldenable                 開始摺疊
:set foldmethod=syntax          設置語法摺疊
:set foldcolumn=0               設置摺疊區域的寬度
:setlocal foldlevel=1           設置摺疊層數爲1
:set foldclose=all              設置爲自動關閉摺疊 

zf            摺疊行(需加方向鍵)
zo            展開摺疊,空格也能夠
zc            關閉摺疊

用空格鍵來開關摺疊(默認)
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>      

使用v選定代碼後,按'='會自動縮進代碼。
使用v選定代碼後,按'>'會將代碼總體右移。

文件格式

有三種文件格式:unix, dos, mac. 三種格式的區別主要在於回車鍵的編碼:dos 下是回車加換行,unix 下只有 換行符,mac 下只有回車符。

:e ++ff=dos filename            讓vim用dos格式打開這個文件
:w ++ff=mac filename            以mac格式存儲這個文件
:set fileformats=unix,dos,mac        添加在配置文件中讓vim自動識別文件格式
:set ff    

標記

使用標記能夠快速移動。到達標記後,能夠用Ctrl+o返回原來的位置。 Ctrl+o和Ctrl+i 很像瀏覽器上的 後退 和 前進 。

m{a-z}                標記光標所在位置,局部標記,只用於當前文件。
m{A-Z}                標記光標所在位置,全局標記。標記以後,退出Vim, 從新啓動,標記仍然有效。
`{a-z}                移動到標記位置。
'{a-z}                移動到標記行的行首。
`{0-9}                    回到上[2-10]次關閉vim時最後離開的位置。
``                    移動到上次編輯的位置。''也能夠,不過``精確到列,而''精確到行 。若是想跳轉到更老的位置,能夠按C-o,跳轉到更新的位置用C-i。
`"                    移動到上次離開的地方。
`.                    移動到最後改動的地方。
:marks                顯示全部標記。
:delmarks a b            刪除標記a和b。
:delmarks a-c            刪除標記a、b和c。
:delmarks a c-f            刪除標記a、c、d、e、f。
:delmarks!                刪除當前緩衝區的全部標記。
:help mark-motions        查看更多關於mark的知識

註釋

方法一 塊選擇模式
Ctrl  v 進入塊選擇模式,而後移動光標選中你要註釋的行,再按大寫的I進入行首插入模式輸入註釋符號如// 或 #,輸入完畢以後,按兩下esc鍵,Vim會自動將你選中的全部行首都加上註釋
Ctrl  v 進入塊選擇模式,選中你要刪除的行首的註釋符號,注意// 要選中兩個,選好以後按d便可刪除註釋


方法二 替換命令

使用下面命令在指定的行首添加和撤銷註釋:

:起始行號,結束行號s/^/註釋符/g        4,9 s/^/\/\//g,能夠將格式中的/替換爲#
:起始行號,結束行號s/^註釋符//g        4,9 s/^\/\///g


:vmap <F5> :s/^/\/\//<CR>        選中內容,按 F5註釋
:vmap <F6> :s/^\/\///<CR>        選中內容,按F6取消註釋

每當輸入#號時,#號都會跑到行首。
在.vimrc中加入以下幾行,便可解決這個問題。
複製代碼 代碼以下:
if has("autocmd")
    filetype plugin indent on
else
    set autoindent
endif "has("autocmd")

統計字數

在visual(可視)模式下,選中須要統計的文本,按g,再按Ctr+g就會顯示選擇的行數,字符數。

:% s/./&/g            顯示當前文本的字符數,行數,原理是用字符本身替換本身,看替換了多少次

複製粘貼

不管是vim內部抑或外部的複製([y]ank)、刪除([d]elete)、粘貼([p]ut),在vim中都是藉助registers(寄存器)實現的,vim共有9類寄存器:
無名(unnamed)寄存器:""                緩存最後一次操做內容;
數字(numbered)寄存器:"0 - "9            緩存最近操做內容,複製與刪除有別;
行內刪除(small delete)寄存器:"-            緩存行內刪除內容;
具名(named)寄存器:"a - "z或"A - "Z        指定時可用;
只讀(read-only)寄存器:":, "., "%, "#        分別緩存最近命令、最近插入文本、當前文件名、當前交替文件名;
表達式(expression)寄存器:"=            只讀,用於執行表達式命令;
選擇及拖拽(selection and drop)寄存器:"*, "+, "~        存取GUI選擇文本,可用於與外部應用交互,使用前提爲系統剪切板(clipboard)可用;
黑洞(black hole)寄存器:"_            不緩存操做內容(乾淨刪除);
模式寄存器(last search pattern):"/        緩存最近的搜索模式。

粘貼剪切板內容
在命令模式下依次輸入「"0p」粘貼0寄存器的內容。

對於非GUI版本的vim,系統剪切板是不可用的,須安裝gvim。

設置了set mouse=a 後,按住 shift 鍵,能夠將鼠標的處理交給 X 環境,方便複製粘貼。

:map <F7> :set nu<CR>
:map <F8> :set nonu<CR>
:map <F9> :set paste<CR>        
:map <F10> :set nopaste<CR>

 

map

:map            輸出已定義的全部映射

map,nmap(命令模式),imap(輸入模式),vmap(選中模式) 

進行命令的宏定義。置能夠預先寫到 ~/.vimrc,寫進配置文件時不用寫前面的冒號。
:nmap  :nohls                   取消被搜索字串的高亮
:nmap  w                       命令模式下轉移光標到不一樣窗口
:imap                          輸入模式下運行
:nmap  :%s= *$==               刪除全部行尾多餘的空格
:nmap  :cl                      此命令用於查看全部的編譯錯誤
:nmap  :cc                      此命令用於查看當前的編譯錯誤
:nmap  :cn                      此命令用於跳到下一個出錯位置
:nmap  :cp                      此命令用於跳到上一個出錯位置
:imap                        同上java 中: (注, 這裏爲何說 java 中, 由於如下定義對其餘文件格式不起做用, 下文會說到如何實現這一點)
:nmap  :JavaBrowser            此命令用於在窗口左部分割出一個新窗口, 裏面的內容是 java 的資源樹, 包括本文件中出現的類, 類的成員變量及成員方法, 就好像 JCreator 
                  表現的那樣。在這個窗口中輸入
? 會看到幫助。 嘿嘿, 很好用, 不過須要 ctags 支持. :nmap :comp javac:mak -d . % 此命令用 javac 編譯 java 文件, 它會自動將光標定位到出錯點. 不過這須要定義一個 javac.vim 文件在 $VIM/compiler 下,
                在 javac.vim 裏面只有兩行字:setlocal makeprg=javac, setlocal errorformat=%A%f:%l:\ %m,%-Z%p^,%-C%.%# :nmap :comp ant:mak 此命令用 ant 編譯 java 文件, 它會自動將光標定位到出錯點. 通常來講, 安裝vim 後已經有了compiler/ant.vim文件, 所以這個命令能夠
              直接使用。可是須要在當前目錄下有 build.xml 文件, 固然還必須安裝 ant 才行 Buffers操做快捷方式 nnoremap
<C-RETURN> :bnext<CR> nnoremap <C-S-RETURN> :bprevious<CR> Tab操做快捷方式 nnoremap <C-TAB> :tabnext<CR> nnoremap <C-S-TAB> :tabprev<CR> 關於tab的快捷鍵 map tn :tabnext<cr> map tp :tabprevious<cr> map td :tabnew .<cr> map te :tabedit map tc :tabclose<cr> 一些不錯的映射轉換語法(若是在一個文件中混合了不一樣語言時有用) nnoremap <leader>1 :set filetype=xhtml<CR> nnoremap <leader>2 :set filetype=css<CR> nnoremap <leader>3 :set filetype=javascript<CR> nnoremap <leader>4 :set filetype=php<CR> nmap <leader>fd :se fileformat=dos<CR> nmap <leader>fu :se fileformat=unix<CR> 使用Ctrl+[l|n|p|cc] 來 list|next|previous|jump to count the result map <C-x>l <ESC>:cl<CR> map <C-x>n <ESC>:cn<CR> map <C-x>p <ESC>:cp<CR> map <C-x>c <ESC>:cc<CR> 選中狀態下 Ctrl c 複製 vmap <C-c> y

autocmd

:set autocmd!
Python 文件的通常設置,好比不要 tab 等 autocmd FileType python set tabstop
=4 shiftwidth=4 expandtab autocmd FileType python map <F12> :!python %<CR> 設置字典 ~/.vim/dict/文件的路徑 autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict autocmd filetype css set dictionary=$VIMFILES/dict/css.dict autocmd filetype php set dictionary=$VIMFILES/dict/php.dict

vim的插件

http://www.ibm.com/developerworks/cn/linux/l-tip-vim2/index.html

gzip(壓縮文件支持)

netrw(網絡文件支持)

engspchk(英文拼寫檢查)

calendar(日曆顯示)\cal

project(文件的「項目」管理):Project

taglist(源代碼結構瀏覽):Tlist
:let Tlist_Inc_Winwidth=0

cvsmenu(CVS集成)

doxygen(文檔註釋語法加亮)

matrix(一個好玩的腳本):Matrix

syntax/2html.vim            讓 Tohtml 產生有 CSS 語法的 html   
let html_use_css=1

ZenCoding.vim             很酷的插件,HTML代碼生成
插件最新版:http://github.com/mattn/zencoding-vim
經常使用命令可看:http://nootn.com/blog/Tool/23/

checksyntax.vim            JavaScript常見語法錯誤檢查
默認快捷方式爲 F5
let g:checksyntax_auto = 0        不自動檢查

NeoComplCache.vim            自動補全插件
let g:AutoComplPop_NotEnableAtStartup = 1
let g:NeoComplCache_EnableAtStartup = 1
let g:NeoComplCache_SmartCase = 1
let g:NeoComplCache_TagsAutoUpdate = 1
let g:NeoComplCache_EnableInfo = 1
let g:NeoComplCache_EnableCamelCaseCompletion = 1
let g:NeoComplCache_MinSyntaxLength = 3
let g:NeoComplCache_EnableSkipCompletion = 1
let g:NeoComplCache_SkipInputTime = '0.5'
let g:NeoComplCache_SnippetsDir = $VIMFILES.'/snippets'
<TAB> completion.
inoremap <expr><TAB> pumvisible() ?   \<C-n>   :   \<TAB>  
snippets expand key
imap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)
smap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)

bufexplorer.vim             Buffers切換
\be                     全屏方式查看所有打開的文件列表
\bv                     左右方式查看   \bs 上下方式查看

taglist.vim              查看函數列表,須要ctags程序
F4 打開隱藏taglist窗口
if MySys() ==   windows                     設定windows系統中ctags程序的位置
    let Tlist_Ctags_Cmd = '  '.$VIMRUNTIME.'/ctags.exe  '
elseif MySys() ==   linux                   設定windows系統中ctags程序的位置
    let Tlist_Ctags_Cmd = '/usr/bin/ctags'
endif
nnoremap <silent><F4> :TlistToggle<CR>
let Tlist_Show_One_File = 1                   不一樣時顯示多個文件的tag,只顯示當前文件的
let Tlist_Exit_OnlyWindow = 1                 若是taglist窗口是最後一個窗口,則退出vim
let Tlist_Use_Right_Window = 1                在右側窗口中顯示taglist窗口
let Tlist_File_Fold_Auto_Close=1              自動摺疊當前非編輯文件的方法列表
let Tlist_Auto_Open = 0
let Tlist_Auto_Update = 1
let Tlist_Hightlight_Tag_On_BufEnter = 1
let Tlist_Enable_Fold_Column = 0
let Tlist_Process_File_Always = 1
let Tlist_Display_Prototype = 0
let Tlist_Compact_Format = 1

mark.vim                 給各類tags標記不一樣的顏色,便於觀看調式的插件。
\m                      mark or unmark the word under (or before) the cursor
\r                      manually input a regular expression. 用於搜索.
\n                      clear this mark (i.e. the mark under the cursor), or clear all highlighted marks .
\*                      當前MarkWord的下一個     
\#                      當前MarkWord的上一個
\/                      全部MarkWords的下一個    
\?                      全部MarkWords的上一個

NERD_tree.vim             以樹狀方式瀏覽系統中的文件和目錄
:ERDtree 打開NERD_tree         :NERDtreeClose    關閉NERD_tree
o                     打開關閉文件或者目錄         
t                     在標籤頁中打開
T                     在後臺標籤頁中打開           
!                     執行此文件
p                     到上層目錄                   
P                     到根目錄
K                     到第一個節點                 
J                     到最後一個節點
u                     打開上層目錄                 
m                     顯示文件系統菜單(添加、刪除、移動操做)
r                     遞歸刷新當前目錄             
R                     遞歸刷新當前根目錄
F3                     NERDTree 切換
map <F3> :NERDTreeToggle<CR>
imap <F3> <ESC>:NERDTreeToggle<CR>

NERD_commenter.vim           註釋代碼用的,
[count],cc                 光標如下count行逐行添加註釋(7,cc)
[count],cu                 光標如下count行逐行取消註釋(7,cu)
[count],cm                 光標如下count行嘗試添加塊註釋(7,cm)
,cA                     在行尾插入 /* */,而且進入插入模式。 這個命令方便寫註釋。
注:count參數可選,無則默認爲選中行或當前行
let NERDSpaceDelims=1          讓註釋符與語句之間留一個空格
let NERDCompactSexyComs=1      多行註釋時樣子更好看

DoxygenToolkit.vim          由註釋生成文檔,而且可以快速生成函數標準註釋
let g:DoxygenToolkit_authorName=  Asins - asinsimple AT gmail DOT com  
let g:DoxygenToolkit_briefTag_funcName=  yes  
map <leader>da :DoxAuthor<CR>
map <leader>df :Dox<CR>
map <leader>db :DoxBlock<CR>
map <leader>dc a /*  */<LEFT><LEFT><LEFT>

matchit.vim               對%命令進行擴展使得能在嵌套標籤和語句之間跳轉
% 正向匹配      
g% 反向匹配
[% 定位塊首    
 ]% 定位塊尾

plugin - vcscommand.vim       對%命令進行擴展使得能在嵌套標籤和語句之間跳轉
SVN/git管理工具

a.vim

搭建vim開發環境

http://blog.csdn.net/tao_627/article/details/9320363

項目管理

http://blog.csdn.net/ithomer/article/details/7090318
http://blog.csdn.net/paul08colin/article/details/9232409

參考

http://www.vim.org/
http://wiki.dzsc.com/info/7313.html
http://www.cnblogs.com/zourrou/archive/2011/04/16/2018493.html
http://blog.csdn.net/wuyeyixi/article/details/7466327
http://blog.csdn.net/tao_627/article/details/9320363
http://blog.csdn.net/ithomer/article/details/7090318
http://blog.csdn.net/paul08colin/article/details/9232409
http://blog.163.com/zhang_sheng_cun/blog/static/46288667200792604435190/
http://linux.chinaunix.net/techdoc/desktop/2009/07/06/1122020.shtml
http://be-evil.org/vim-how-to-comment-multi-line-code.html
http://www.ibm.com/developerworks/cn/linux/l-tip-vim2/index.html
http://vimcdoc.sourceforge.net/        下載vim的pdf徹底翻譯版,裏面很詳細的介紹了vim
http://www.vi-improved.org/vimrc.php        帶有英文註釋的.vimrc配置文件

unix/linux的哲學之一是使用獨立的小工具完成複雜的工做。

相關文章
相關標籤/搜索