vim常用命令详解
1.獲取幫助
?WHAT?PREPEND????EXAMPLE?~
??????Normal?mode?command??????(nothing)???:help?x
??????Visual?mode?command??v_???:help?v_u
??????Insert?mode?command??i_???:help?i_<Esc>
??????Command-line?command??:???:help?:quit
??????Command-line?editing??c_???:help?c_<Del>
??????Vim?command?argument??-???:help?-r
??????Option??'???:help?'textwidth'
??????查看錯(cuò)誤信息?(nothing)??:help?E37
?
2.命令
編輯命令:?????
a?添加字符
A?從行尾添加字符
?????????????i(Insert)???????插入
I?從行第一個(gè)字符開(kāi)始插入
x(效仿打字機(jī))?刪除一個(gè)字符,例如3x刪除光標(biāo)處向右的三個(gè)字符
d(delete)?刪除
dd?刪除一整行,3dd從當(dāng)前行開(kāi)始向下刪除三行文本
dw刪除當(dāng)前字符到單詞尾包括空格的所有字符
yy命令復(fù)制當(dāng)前整行的內(nèi)容到vi緩沖區(qū)
yw復(fù)制當(dāng)前光標(biāo)所在位置到單詞尾字符的內(nèi)容到vi緩存區(qū),相當(dāng)于復(fù)制一個(gè)單詞
y$復(fù)制光標(biāo)所在位置到行尾內(nèi)容到緩存區(qū)
y^復(fù)制光標(biāo)所在位置到行首內(nèi)容到緩存區(qū)
#yy例如:5yy就是復(fù)制5行
#yw例如:2yw就是復(fù)制兩個(gè)單詞
如果要復(fù)制第m行到第n行之間的內(nèi)容,可以在末行模式中輸入m,ny例如:3,5y復(fù)制第三行到第五行內(nèi)容到緩存區(qū)。
?
J?刪除回行符(合并兩行)?合行后中間加一個(gè)空格
gJ?刪除回行符,合行后首尾空格不去除
u(undo)?撤銷上一步操作
U(undo)?撤銷一整行操作(此操作算為一次操作,可用u撤銷)
Ctrl+R(redo)?從做撤銷的操作
i?在當(dāng)前位置插入
o?在光標(biāo)的下面插入新行
O?在光標(biāo)的上面插入新行
r?替換光標(biāo)下的字符,加上計(jì)數(shù)器表示連續(xù)替換多個(gè)字符為一個(gè)字符
R?替換整行字符
s刪除光標(biāo)所在的字符,用你輸入的字符取代它
?
至上而下的查找
/?要查找的字符竄,其中/代表從光標(biāo)所在位置起開(kāi)始查找,例如:/?work
至下而上的查找
?要查找的字符竄?例如:??work
替換
:s/old/new用new替換行中首次出現(xiàn)的old
:?s/old/new/g?用new替換行中所有出現(xiàn)的old
:#,#?s/old/new/g用new替換從第#行到第#行中出現(xiàn)的old
:%?s/old/new/g用new替換整篇中出現(xiàn)的old
如果替換的范圍較大時(shí),在所有的命令尾加一個(gè)c命令,強(qiáng)制每個(gè)替換需要用戶進(jìn)行確認(rèn),例如:s/old/new/c?或s/old/new/gc
?
.?重復(fù)上一次更改
p?粘貼默認(rèn)寄存器中的內(nèi)容,可用計(jì)數(shù)器
y?復(fù)制選中內(nèi)容到默認(rèn)寄存器
~?切換當(dāng)前字母大小寫
g~?切換字母大小寫
gU?將字母切換成大寫
gu?將字母切換成小寫
g~~?g~g~?切換整行字母大小寫
gUU?gUgU
guu?gugu
>?在visual模式下將選中的內(nèi)容右移,前面填充空格
<?在visual模式下將選中的內(nèi)容左移,前面的空格刪除
:{range}read?patch?在當(dāng)前行的下面插入文件patch中的內(nèi)容,如果指定了range?則插入到range中最后的一行下面,這里的range可以用特殊的行號(hào)0
:{range}read?!{command}?將命令的輸出插入到文件中
?
gq?格式化所選文本
:[range]m[ove]?{address}?把選中的文本移動(dòng)到address下面
:[range]co[py]?{address}?把選中的文本復(fù)制到address下面
等價(jià)的:
x=dl
X=dh
D=d$
C=c$
s=cl
S=cc
?
位移命令:
??在普通模式下?hjkl?代表?左下上右,和上下左右四個(gè)箭頭是一樣的!
w?往后跳一個(gè)單詞,光標(biāo)停在第一個(gè)字母上
b?往前挑一個(gè)單詞,光標(biāo)停在第一個(gè)字母上
e?往后跳一個(gè)單詞,光標(biāo)停在最后一個(gè)字母上
ge?往前跳一個(gè)單詞,光標(biāo)停在最后一個(gè)字母上
$?跳到行尾,可用計(jì)數(shù)器向下跳多行
?
^?跳到行首不算上空白,加上計(jì)數(shù)器沒(méi)有效果
f?向后查找字符,用計(jì)數(shù)器表示查找到第幾個(gè)匹配字符
F?向前查找字符,用計(jì)數(shù)器表示查找到第幾個(gè)匹配字符
t
T
;?跳到下一個(gè)匹配的字符
,?跳到上一個(gè)匹配的字符
%?匹配括號(hào)?前面加數(shù)字表示跳轉(zhuǎn)到文件的百分比
G???前面加數(shù)字跳轉(zhuǎn)到明確的行,不加數(shù)字表示跳轉(zhuǎn)到文件的最后一行
gg?跳到文件的第一行
H(Home)?跳到屏幕的最上方一行
M(Middle)?跳到屏幕的中間一行
L(Last)?跳到屏幕的最下面一行,和end是一樣的
CTRL-U(up)?將屏幕向上滾動(dòng)半個(gè)屏幕的文本
CTRL-D(down)?將屏幕向下滾動(dòng)半個(gè)屏幕的文本
CTRL-E?將文字向上提一行
CTRL-Y?將文字向下拉一行
CTRL-F?將屏幕向下滾動(dòng)一屏
CTRL-B???????????將屏幕向上滾動(dòng)一屏
CTRL-]???跳轉(zhuǎn)到標(biāo)簽內(nèi)部
CTRL-T???跳轉(zhuǎn)到父標(biāo)簽
??CTRL-O?????跳轉(zhuǎn)到更老的jump點(diǎn)
??CTRL-I?????跳轉(zhuǎn)到更新的jump點(diǎn),與<TAB>功能相同
?
`?跳轉(zhuǎn)到某標(biāo)簽的光標(biāo)位置
'?跳轉(zhuǎn)到某標(biāo)簽的行首
文本對(duì)象:(很像計(jì)數(shù)器+位移命令)
a?????包括前后空格
???????i????????????????不包括前后空格
w?單詞
s?句子
p?段落
其他命令:
?
------------------多文件-------------------------
vim?one.c?two.c?three.c???通過(guò)VIM同時(shí)編輯三個(gè)文件
:next??編輯下一個(gè)文件??可以用計(jì)數(shù)器?:2next
:wnext??保存并編輯下一個(gè)文件
:args??顯示打開(kāi)VIM時(shí)編輯的文件列表
:previous??編輯上一個(gè)文件?可以用計(jì)數(shù)器
:wprevious??保存并編輯上一個(gè)文件
:first??編輯第一個(gè)文件(沒(méi)有w版本)
:last??編輯最后一個(gè)文件(沒(méi)有w版本)
:args?*.txt??從新編輯文件列表,未保存文件將提示,可以用通配符,可以用強(qiáng)制符
?
-------------------多窗口----------------------------------
vim?-o?one.txt?two.txt?水平多個(gè)窗口打開(kāi)多個(gè)文件
vim?-O?one.txt?two.txt???垂直多個(gè)窗口打開(kāi)多個(gè)文件
:all?為列表中的文件各開(kāi)一個(gè)窗口(可vertical)
:split?上下分割當(dāng)前窗口,在上面打開(kāi)新窗口
:vsplit?左右分割窗體,在左邊打開(kāi)新窗口
:split?two.c?在新窗口編輯文件
:3split?alpha.c?設(shè)定新窗口的高度
:new?創(chuàng)建新窗口創(chuàng)建新文件在當(dāng)前窗口上面
:vnew?創(chuàng)建新窗口創(chuàng)建新文件在當(dāng)前窗口左面
:vertical?new?等同于vnew
:vertical?加在任何分割窗口的命令前面,使其垂直分割
CTRL-W?w?窗口切換
CTRL-W?CTRL-W?和CTRL+W?w一樣
:close?關(guān)閉窗口
:only?關(guān)閉其他所有窗口
CTRL-W?+?增大窗口,可以用計(jì)數(shù)器
CTRL-W?-?減小窗口,可以用計(jì)數(shù)器
15CTRL-W?_?指定當(dāng)前窗口高度為15
CTRL-W?_?最大化當(dāng)前窗口
CTRL-W?h?move?to?the?window?on?the?left
CTRL-W?j?move?to?the?window?below
CTRL-W?k?move?to?the?window?above
CTRL-W?l?move?to?the?window?on?the?right
CTRL-W?t?move?to?the?TOP?window
CTRL-W?b?move?to?the?BOTTOM?window
CTRL-W?H?move?window?to?the?far?left
CTRL-W?J?move?window?to?the?bottom
CTRL-W?K?move?window?to?the?top
CTRL-W?L?move?window?to?the?far?right
:qall?退出所有窗口
:wall?存儲(chǔ)所有文件
:wqall?存儲(chǔ)并退出所有文件
:qall!?放棄存儲(chǔ)退出所有文件
?
------------------------文件對(duì)比--------------------------
vimdiff?a.c?b.c?對(duì)比兩個(gè)文件的差別
zc?關(guān)閉折疊
zo?打開(kāi)折疊
-----------------------tab欄------------------------------
gT?反向的gT
:tab?split?通過(guò)一個(gè)新tab打開(kāi)當(dāng)前文件
:tab?help
:tabonly?除了當(dāng)前的tab其它的都關(guān)閉
-----------------------GUI選項(xiàng)----------------------------
:set?guioptions?設(shè)置GUI的選項(xiàng)?T代表toolsbar?l代表左滾動(dòng)條
:behave?xterm?把鼠標(biāo)設(shè)置成Xterm模式
:behave?mswin?把鼠標(biāo)設(shè)置成mswin模式
'mouse'?in?which?mode?the?mouse?is?used?by?Vim
'mousemodel'?what?effect?a?mouse?click?has
'mousetime'?time?between?clicks?for?a?double-click
'mousehide'?hide?the?mouse?while?typing
'selectmode'?whether?the?mouse?starts?Visual?or?Select?mode
:setselectmode+=mouse?通過(guò)鼠標(biāo)選擇文本進(jìn)入選擇模式,選擇模式下輸入字符會(huì)使用新字符替換之前選中的字符。
-------------------------其它的---------------------------
:{range}write>>logfile?將當(dāng)前內(nèi)容追加到指定文件中
:{range}write?保存,后面加路徑為另存為
:{range}write?{command}?將當(dāng)前文件保存到command中表示把當(dāng)前文件作為被調(diào)用命令的參數(shù)?如?:write?!wc?返回當(dāng)前文件的字符數(shù)
:w?:write的縮寫
:edit(e)?打開(kāi),編輯
ZZ?????????保存并退出
zz???將光標(biāo)所在行移至窗口中間
:q???退出
vim?-R?file?用只讀模式打開(kāi)file?unix中view?file等效,通過(guò)w!可以強(qiáng)制存盤
vim?-M?file?用只讀模式打開(kāi)file?通過(guò)?:set?modifiable?:set?write?可以去除這種保護(hù)
vim?-r?file?用swp文件恢復(fù)當(dāng)前打開(kāi)文件,恢復(fù)一個(gè)還沒(méi)有命名保存的文件時(shí)用?vim?-r?""?,其中file可以是被恢復(fù)的原文件,也可以是用于恢復(fù)的交換文件(VIM會(huì)根據(jù)交換文件自動(dòng)找到原文件)
vim?-r?列出當(dāng)前可用的所有交換文件,然后選擇用哪個(gè)恢復(fù)
:recover?用交換文件恢復(fù)當(dāng)前文件
:set?shortmess?選擇關(guān)閉信息提示功能
:saveas?move.s?將當(dāng)前文件另存為move.s
:file?move.c?將當(dāng)前文件重命名為move.c
{command}!???強(qiáng)制符
!{motion}{program}?執(zhí)行外部程序?輸入完!{motion}部分后命令會(huì)自動(dòng)跳轉(zhuǎn)到命令行部分,會(huì)通過(guò)motion部分的內(nèi)用調(diào)用program然后用返回結(jié)果覆蓋調(diào)motion選擇的部分?例如:!5Gsort<Enter>
!!?在當(dāng)前行執(zhí)行程序?相當(dāng)于?:.!
:jumps?列出跳轉(zhuǎn)記錄
:marks?列出所有標(biāo)簽
:reg?查看寄存器內(nèi)的內(nèi)容
<ESC>?????取消命令
CTRL-G?????顯示行數(shù)等信息
m?創(chuàng)建標(biāo)簽,用a-z?是局域標(biāo)簽,A-Z是全局標(biāo)簽
v?進(jìn)入visual模式
V?進(jìn)入visual模式,以行為對(duì)象
CTRL-V?進(jìn)入visual模式,以矩形為對(duì)象
o?在以矩形為單位的visual模式時(shí)?光標(biāo)對(duì)角切換
O?在以矩形為單位的visual模式時(shí)?光標(biāo)平角切換
"{a-Z,+,*等}?選擇寄存器復(fù)制\剪切\(zhòng)粘貼?大寫字母表示追加
'"?跳到上次退出此文件時(shí)的位置
'.?跳到最后編輯此文件的位置
:TOhtml?把當(dāng)前文件轉(zhuǎn)化成HTML格式
:source?$VIMRUNTIME/syntax/2html.vim??把2html.vim轉(zhuǎn)化成HTML顯示在屏幕上
g?Ctrl-G?統(tǒng)計(jì)字?jǐn)?shù),可以在visual模式下選擇要統(tǒng)計(jì)的字符
---------------------------------------------------------------
?
3.配置與設(shè)置
在布爾型參數(shù)前加no表示關(guān)閉選項(xiàng)
配置項(xiàng)支持-=?和?+=
拷貝默認(rèn)的配置文件:??????:!cp?-i?$VIMRUNTIME/vimrc_example.vim?~/.vimrc
VIM的默認(rèn)安裝路徑:/usr/share/vim
VIM的默認(rèn)配置文件路徑:?~/.vim/
VIM的默認(rèn)插件文件路徑:?~/.vim/plugin/
VIM的默認(rèn)文件類型配置文件路徑:?~/.vim/ftplugin/
VIM的默認(rèn)文檔安裝路徑:?~/.vim/doc
文件類型配置文件多文件的配置方式:
ftplugin/<filetype>.vim
ftplugin/<filetype>_<name>.vim
ftplugin/<filetype>/<name>.vim
或
mkdir?$VIM/vimfiles/ftplugin/fortran
$VIM/vimfiles/ftplugin/fortran/too.vim
??高亮字體設(shè)置的路徑:$VIMRUNTIME/syntax
配色方案的路徑:$VIMRUNTIME/colors???~/.vim/colors
生成幫助文件的tags:???????????????:helptags?~/.vim/doc
查看本地添加的所有幫助文件:??:help?local-additions
打開(kāi)配置文件?:edit?$MYVIMRC
查看版本和一些文件配置信息????????:version
把所有選項(xiàng)攝制成默認(rèn)??????????????:set?all&
查看所有和默認(rèn)不一樣的設(shè)置????????:set
打開(kāi)設(shè)置窗口??:options
配置命令:
在所有配置項(xiàng)后面添加&表示設(shè)置為默認(rèn)值
:set?showmode???????????????????????顯示當(dāng)前的模式
:set?compatible????????????????????????查看當(dāng)前是否為兼容模式
:set?number???????????????????????顯示行號(hào)
:set?ruler???????????????????????在屏幕右下角顯示光標(biāo)位置
:set?ignorecase????????????????????????搜索乎略大小寫
????????:set?hlsearch???????????????????????設(shè)置搜索結(jié)果高亮
:nohlsearch???????關(guān)閉當(dāng)前搜索結(jié)果的高亮
:set?incsearch???????????????????????(incomplete)在輸入單詞的同時(shí)顯示搜索結(jié)果
:set?wrapscan???????????????????????搜索到文件底部的時(shí)候從文件的開(kāi)頭繼續(xù)搜索反之亦然
:set?wrap???????是否自動(dòng)換行
:set?whichwrap???????設(shè)置那些命令可以跨行b是backspace?s是Space?具體查看'whichwrap'
:set?sidescroll???????設(shè)置左右自動(dòng)滾動(dòng)的觸發(fā)字符數(shù)
:set?scrolloff???????設(shè)置上下自動(dòng)滾動(dòng)的觸發(fā)行數(shù)
:set?compatible????????????????????????是否與vi兼容
:set?backspace=indent,eol,start????????設(shè)置在Insert模式下backspace鍵可以刪除?行前的自動(dòng)縮進(jìn),回行,和進(jìn)入插入模式時(shí)光標(biāo)之前的字符
:set?autoindent????????????????????????自動(dòng)縮進(jìn)(在Insert中回車或者在正常模式下o)
:set?backup???????覆蓋一個(gè)文件時(shí)備份它
:set?history???????設(shè)置命令和搜索的歷史記錄數(shù)量
:set?showcmd???????在右下角顯示按鍵命令
:set?list???????制表符高亮
:set?listchars=tab:>-,trail:-???????設(shè)置制表符的替換字符串
:set?iskeyword???????設(shè)置關(guān)鍵字的組成字母@表示a-Z
:set?cmdheight???????設(shè)置命令區(qū)高度
:map?Q?gq???????設(shè)置映射
:map?<F5>?i{<Esc>ea}<Esc>???????映射F5的功能為給一個(gè)單詞加{}
:set?shiftwidth???????設(shè)置左右移動(dòng)的距離
:set?joinspaces???????設(shè)置合行后的空格數(shù)
:set?textwidth???????設(shè)置文本的寬度
:set?updatetime???????設(shè)置多長(zhǎng)時(shí)間沒(méi)有編輯文件就自動(dòng)存盤,毫秒為單位
:set?updatecount???????設(shè)置輸入多少字符后自動(dòng)存盤
:set?directory???????設(shè)置查看在哪里存儲(chǔ)交換文件
:set?autowrite???????自動(dòng)存盤,此存盤是在必要時(shí)刻自動(dòng)存儲(chǔ)不像word那樣隔幾分鐘存一次
?
配置文件中的特殊用法:
autocmd?自動(dòng)執(zhí)行命令
autocmd?FileType?text?setlocal?textwidth=78?設(shè)置?文本文件?文本寬度為78
手動(dòng)設(shè)置文件的高亮配置文件:
在文件開(kāi)頭或者結(jié)尾寫入??#?vim:?syntax=make
在VIM中執(zhí)行shell的時(shí)候可以配置shell備置列表如下:
'shell'?specifies?the?program?that?Vim?uses?to?execute?external?programs.
'shellcmdflag'?argument?to?pass?a?command?to?the?shell
'shellquote'?quote?to?be?used?around?the?command
'shellxquote'?quote?to?be?used?around?the?command?and?redirection
'shelltype'?kind?of?shell?(only?for?the?Amiga)
'shellslash'?use?forward?slashes?in?the?command?(only?for?MS-Windows?and?alikes)
'shellredir'?string?used?to?write?the?command?output?into?a?file
4.搜索
搜索支持正則表達(dá)式
/?向后搜索
??向前所搜
n?下一個(gè)匹配項(xiàng)
N?上一個(gè)匹配項(xiàng)
*?從上向下搜索單詞
#?從下向上搜索單詞
搜索單詞:?/\<the\>??這樣指定了單詞的開(kāi)始和結(jié)尾
5.常用套路技巧:
套路:
x?delete?character?under?the?cursor?(short?for?"dl")
X?delete?character?before?the?cursor?(short?for?"dh")
D?delete?from?cursor?to?end?of?line?(short?for?"d$")
dw?delete?from?cursor?to?next?start?of?word
db?delete?from?cursor?to?previous?start?of?word
diw?delete?word?under?the?cursor?(excluding?white?space)
daw?delete?word?under?the?cursor?(including?white?space)
dG?delete?until?the?end?of?the?file
dgg?delete?until?the?start?of?the?file
技巧:
'*?是選區(qū)寄存器(用鼠標(biāo)中鍵)??'+?是粘貼寄存器(一般是菜單里的復(fù)制粘貼選項(xiàng))
Insert模式和Replace模式可以用Insert鍵切換
將Doe,John?替換成?John?Doe?用如下方法:
:%s/\([^,]*\),\(.*\)/\2?\1/????????其中\(zhòng)1?表示正則表達(dá)式中第一個(gè)匹配部分,整句的匹配部分用?\0表示
?
反序排列的方法:
首先到要反序的第一行,用mt標(biāo)注當(dāng)前位置,然后到要替換的反序的最后一行,輸入命令:'t+1,.g/^/m?'t?可以用.范圍(global默認(rèn)是%)然后編輯反射這樣就可以挑出想要的內(nèi)容,還可以不確定范圍用0代替?'t將對(duì)整個(gè)文件進(jìn)行反序
挑選文本的方法:
:map?<F4>?:.g/^/co?'p<enter>?:normal?<c-o><enter>?需要首先用mp定義p的位置
6.配色方案:
命令:
:syntax?on???????打開(kāi)語(yǔ)法高亮
:syntax?clear???????清楚當(dāng)前的語(yǔ)法高亮
:syntax?off???????關(guān)閉語(yǔ)法高亮
:syntax?manual???????將高亮模式設(shè)置為手動(dòng)
:set?syntax=ON???????設(shè)置以上選項(xiàng)后,用這個(gè)命令開(kāi)啟語(yǔ)法高亮
:filetype?on???????打開(kāi)文件類型檢測(cè)
:set?filetype???????設(shè)置當(dāng)前文件類型
:plugin?on???????使用文件類型插件
:indent?on???????打開(kāi)文件類型自動(dòng)縮進(jìn)
????????:set?background???????手動(dòng)配置背景色(VIM一般會(huì)自動(dòng)推斷終端的背景色)?此命令必須放置在?:syntax?enable?前?否則不起作用
:syntax?reset???????vim重新設(shè)置默認(rèn)顏色
:runtime?syntax/colortest.vim???????查看配色方案的實(shí)例
:colorscheme???????選擇配色方案
:colorscheme?mine???????一直使用自己的配色方案
CTRL-L???????重繪VIM的屏幕
配色方案文件中的關(guān)鍵字及作用:
配色方案的路徑:$VIMRUNTIME/colors???~/.vim/colors
term?attributes?in?a?B&W?terminal
cterm?attributes?in?a?color?terminal
ctermfg?foreground?color?in?a?color?terminal
ctermbg?background?color?in?a?color?terminal
gui?attributes?in?the?GUI
guifg?foreground?color?in?the?GUI
guibg?background?color?in?the?GUI
可以這樣設(shè)置:highlight?Comment?ctermfg=green?guifg=green
?
7.命令記錄與回放
q{a-z}?用于開(kāi)始記錄宏,放在寄存器里面的命令可以當(dāng)成文本粘貼出來(lái),大寫字母表示追加
q?結(jié)束宏
@{a-z}?執(zhí)行宏
@@?用上一次執(zhí)行宏的寄存器執(zhí)行宏
8.搜索替換
:[range]substitute/from/to/[flags]?搜索替換的格式?substitute縮寫為s,=和+也可以用于分隔符
[range]?默認(rèn)為當(dāng)前行
[flags]?默認(rèn)指替換第一個(gè)
g(gloabl)?替換范圍內(nèi)全局
p(print)?顯示替換的最后一行
e?告訴VIM未找到匹配時(shí)不要報(bào)錯(cuò)
c(confirm)?每次替換要求用戶確認(rèn)
y?Yes;?make?this?change.
n?No;?skip?this?match.
a?All;?make?this?change?and?all?remaining?ones?without?further?confirmation.
q?Quit;?don't?make?any?more?changes.
l?Last;?make?this?change?and?then?quit.
CTRL-E?Scroll?the?text?one?line?up.
CTRL-Y?Scroll?the?text?one?line?down.
9.全局命令
:[range]global/{pattern}/{command}?全局命令的一般形式,其中g(shù)lobal可以縮寫成g,command必須是:命令,正常模式下的命令可以通過(guò)?:normal實(shí)現(xiàn)
10.命令范圍
任何命令都可以有一個(gè)范圍
{number}?number是行號(hào),指定一行
{number},{number}?指定多行,包含指定的兩行,這里的number可以是一個(gè)搜索模式,??abc???表示向上搜索abc?/abc/?表示向下搜索abc?,當(dāng)開(kāi)始行大于結(jié)束行的時(shí)候它會(huì)問(wèn)你是否交換兩個(gè)參數(shù),可以在任何number后面添加偏移量,例如:?.+1,$-3??或者??a?+1,/b/-1等等,還可以在visual模式下選擇范圍當(dāng)按下:時(shí)會(huì)出現(xiàn)?:'<,'>?這時(shí)的作用范圍即是選區(qū)開(kāi)始的字符到選區(qū)結(jié)束的字符,要注意的是即使是CTRL-V進(jìn)入的塊選區(qū)也是以行為基本單位
.?光標(biāo)的當(dāng)前行
1?第一行
$?最后一行
%?相當(dāng)于?1,$
'a-z'?number還可以用mark表示
`<?上一個(gè)選區(qū)開(kāi)始的位置
`>?上一個(gè)選區(qū)結(jié)束的位置
'<?上一個(gè)選區(qū)開(kāi)始的行
'>?上一個(gè)選區(qū)結(jié)束的行
5:?就是在:前面加計(jì)數(shù)器將會(huì)在命令欄打開(kāi)?:.,.+4?可以用任意的計(jì)數(shù)器
*.需要注意的:
1.?d2e?和?d2w?的區(qū)別
2.?cw?和?ce?的結(jié)果一樣,都是c2e的結(jié)果
3.?^命令加上計(jì)數(shù)器沒(méi)有效果
4.?Y和yy?的結(jié)果一樣,都是yy的結(jié)果,如果想用Y的效果只能y$了
??5.?vnoremap?_g?y:exe?"grep?/"?.?escape(@",?'\\/')?.?"/?*.c?*.h"<CR>?這句沒(méi)看懂??????05.2*?The?example?vimrc?file?explained
6.?autocmd?BufReadPost?*
???\?if?line("'\"")?>?1?&&?line("'\"")?<=?line("$")?|
???\???exe?"normal!?g`\""?|
???\?endif
沒(méi)看懂?05.2*?The?example?vimrc?file?explained
7.?關(guān)于自定義高亮?查看?mysyntaxfile?????和??syntax
8.?關(guān)于自定義文件類型?查看????new-filetype|
http://www.pc6.com/infoview/Article_50413_all.html
"?設(shè)定默認(rèn)解碼
set?fenc=utf-8
set?fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
"?不要使用vi的鍵盤模式,而是vim自己的
set?nocompatible
"?history文件中需要記錄的行數(shù)
set?history=100
"?在處理未保存或只讀文件的時(shí)候,彈出確認(rèn)
set?confirm
"?與windows共享剪貼板
set?clipboard+=unnamed
"?偵測(cè)文件類型
filetype?on
"?載入文件類型插件
filetype?plugin?on
"?為特定文件類型載入相關(guān)縮進(jìn)文件
filetype?indent?on
"?保存全局變量
set?viminfo+=!
"?帶有如下符號(hào)的單詞不要被換行分割
set?iskeyword+=_,$,@,%,#,-
"?語(yǔ)法高亮
syntax?on
"?高亮字符,讓其不受100列限制
:highlight?OverLength?ctermbg=red?ctermfg=white?guibg=red?guifg=white
:match?OverLength?'\%101v.*'
"?狀態(tài)行顏色
highlight?StatusLine?guifg=SlateBlue?guibg=Yellow
highlight?StatusLineNC?guifg=Gray?guibg=White
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?文件設(shè)置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?不要備份文件(根據(jù)自己需要取舍)
set?nobackup
"?不要生成swap文件,當(dāng)buffer被丟棄的時(shí)候隱藏它
setlocal?noswapfile
set?bufhidden=hide
"?字符間插入的像素行數(shù)目
set?linespace=0
"?增強(qiáng)模式中的命令行自動(dòng)完成操作
set?wildmenu
"?在狀態(tài)行上顯示光標(biāo)所在位置的行號(hào)和列號(hào)
set?ruler
set?rulerformat=%20(%2*%<%f%=\?%m%r\?%3l\?%c\?%p%%%)
"?命令行(在狀態(tài)行下)的高度,默認(rèn)為1,這里是2
set?cmdheight=2
"?使回格鍵(backspace)正常處理indent,?eol,?start等
set?backspace=2
"?允許backspace和光標(biāo)鍵跨越行邊界
set?whichwrap+=<,>,h,l
"?可以在buffer的任何地方使用鼠標(biāo)(類似office中在工作區(qū)雙擊鼠標(biāo)定位)
set?mouse=a
set?selection=exclusive
set?selectmode=mouse,key
"?啟動(dòng)的時(shí)候不顯示那個(gè)援助索馬里兒童的提示
set?shortmess=atI
"?通過(guò)使用:?commands命令,告訴我們文件的哪一行被改變過(guò)
set?report=0
"?不讓vim發(fā)出討厭的滴滴聲
set?noerrorbells
"?在被分割的窗口間顯示空白,便于閱讀
set?fillchars=vert:\?,stl:\?,stlnc:\
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?搜索和匹配
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?高亮顯示匹配的括號(hào)
set?showmatch
"?匹配括號(hào)高亮的時(shí)間(單位是十分之一秒)
set?matchtime=5
"?在搜索的時(shí)候忽略大小寫
set?ignorecase
"?不要高亮被搜索的句子(phrases)
set?nohlsearch
"?在搜索時(shí),輸入的詞句的逐字符高亮(類似firefox的搜索)
set?incsearch
"?輸入:set?list命令是應(yīng)該顯示些啥?
set?listchars=tab:\|\?,trail:.,extends:>,precedes:<,eol:$
"?光標(biāo)移動(dòng)到buffer的頂部和底部時(shí)保持3行距離
set?scrolloff=3
"?不要閃爍
set?novisualbell
"?我的狀態(tài)行顯示的內(nèi)容(包括文件類型和解碼)
set?statusline=%F%m%r%h%w\?[FORMAT=%{&ff}]\?[TYPE=%Y]\?[POS=%l,%v][%p%%]\?%{strftime(\"%d/%m/%y\?-\?%H:%M\")}
"?總是顯示狀態(tài)行
set?laststatus=2
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?文本格式和排版
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?自動(dòng)格式化
set?formatoptions=tcrqn
"?繼承前一行的縮進(jìn)方式,特別適用于多行注釋
set?autoindent
"?為C程序提供自動(dòng)縮進(jìn)
set?smartindent
"?使用C樣式的縮進(jìn)
set?cindent
"?制表符為4
set?tabstop=4
"?統(tǒng)一縮進(jìn)為4
set?softtabstop=4
set?shiftwidth=4
"?不要用空格代替制表符
set?noexpandtab
"?不要換行
set?nowrap
"?在行和段開(kāi)始處使用制表符
set?smarttab
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?CTags的設(shè)定
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?按照名稱排序
let?Tlist_Sort_Type?=?"name"
"?在右側(cè)顯示窗口
let?Tlist_Use_Right_Window?=?1
"?壓縮方式
let?Tlist_Compart_Format?=?1
"?如果只有一個(gè)buffer,kill窗口也kill掉buffer
let?Tlist_Exist_OnlyWindow?=?1
"?不要關(guān)閉其他文件的tags
let?Tlist_File_Fold_Auto_Close?=?0
"?不要顯示折疊樹(shù)
let?Tlist_Enable_Fold_Column?=?0
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?Autocommands
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"?只在下列文件類型被偵測(cè)到的時(shí)候顯示行號(hào),普通文本文件不顯示
if?has("autocmd")
?autocmd?FileType?xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby?set?number
?autocmd?FileType?xml,html?vmap?<C-o>?<ESC>'<i<!--<ESC>o<ESC>'>o-->
?autocmd?FileType?java,c,cpp,cs?vmap?<C-o>?<ESC>'<o
?autocmd?FileType?html,text,php,vim,c,java,xml,bash,shell,perl,python?setlocal?textwidth=100
?autocmd?Filetype?html,xml,xsl?source?$VIMRUNTIME/plugin/closetag.vim
?autocmd?BufReadPost?*
?\?if?line("'\"")?>?0?&&?line("'\"")?<=?line("$")?|
?\??exe?"normal?g`\""?|
?\?endif
endif?"?has("autocmd")
"?F5編譯和運(yùn)行C程序,F6編譯和運(yùn)行C++程序
"?請(qǐng)注意,下述代碼在windows下使用會(huì)報(bào)錯(cuò)
"?需要去掉./這兩個(gè)字符
"?C的編譯和運(yùn)行
map?<F5>?:call?CompileRunGcc()<CR>
func!?CompileRunGcc()
exec?"w"
exec?"!gcc?%?-o?%<"
exec?"!?./%<"
endfunc
"?C++的編譯和運(yùn)行
map?<F6>?:call?CompileRunGpp()<CR>
func!?CompileRunGpp()
exec?"w"
exec?"!g++?%?-o?%<"
exec?"!?./%<"
endfunc
"?能夠漂亮地顯示.NFO文件
set?encoding=utf-8
function!?SetFileEncodings(encodings)
?let?b:myfileencodingsbak=&fileencodings
?let?&fileencodings=a:encodings
endfunction
function!?RestoreFileEncodings()
?let?&fileencodings=b:myfileencodingsbak
?unlet?b:myfileencodingsbak
endfunction
au?BufReadPre?*.nfo?call?SetFileEncodings('cp437')|set?ambiwidth=single
au?BufReadPost?*.nfo?call?RestoreFileEncodings()
"?高亮顯示普通txt文件(需要txt.vim腳本)
au?BufRead,BufNewFile?*??setfiletype?txt
"?用空格鍵來(lái)開(kāi)關(guān)折疊
set?foldenable
set?foldmethod=manual
nnoremap?<space>?@=((foldclosed(line('.'))?<?0)???'zc'?:?'zo')<CR>
"?minibufexpl插件的一般設(shè)置
let?g:miniBufExplMapWindowNavVim?=?1
let?g:miniBufExplMapWindowNavArrows?=?1
let?g:miniBufExplMapCTabSwitchBufs?=?1
let?g:miniBufExplModSelTarget?=?1
--------------------------------------------------------------------------------
.gvimrc
"?Buffer的位置和大小
winpos?300?100
set?lines=28
set?columns=90
"?因?yàn)樵O(shè)定為不換行,所以要顯示底部滾動(dòng)條,不顯示左右滾動(dòng)條和工具欄
set?guioptions+=b
set?guioptions-=r
set?guioptions-=l
set?guioptions-=T
"?設(shè)定顏色方案和字體
"?英文用Consolas顯示,中文用微軟雅黑
colorscheme?desert
set?guifont=Consolas\?11.5
set?guifontset=Microsoft\?YaHei\?11
"?用淺色高亮當(dāng)前行
autocmd?InsertLeave?*?se?nocul
autocmd?InsertEnter?*?se?cul
http://www.ax.net.cn/?action=show&id=251
在命令模式下輸入
:set?nu
或者
:set?number
都可以為vi設(shè)置行號(hào),如果要取消的話,則輸入
:set?nonu
行號(hào)的設(shè)置是vi的環(huán)境設(shè)置,不會(huì)影響文本的內(nèi)容。
http://zhidao.baidu.com/question/188146901.html&__bd_tkn__=
6abd4535212f8b25470aa16db7a564f6940ad7e68078338d51fed8133
ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb6015
7954f5339961a0f85f0f03de01252774a633c90749059d057e2ecf84d338367806
2d4128bf670b4738b2adab950789accbdc8d0cc93023f448ac
Linux下VI編輯器如果出現(xiàn)不能保存中文的問(wèn)題你可以在當(dāng)前用戶下,建.vimrc文件內(nèi)容如下:
set?nocompatible?"Use?Vim?defaults?(much?better!)set?bs=indent,eol,start"?Allow?backspacing?over?everything?in?insert?mod
http://server.zol.com.cn/127/1270793.html
?
?
?
?
?
?
轉(zhuǎn)載于:https://blog.51cto.com/mcmvp/986342
總結(jié)
- 上一篇: 本地化中文示例代码需求调查
- 下一篇: Activity两个启动方法的区别