VIM 资料

来源:互联网 发布:减肥运动软件 编辑:程序博客网 时间:2024/06/14 00:15

1 基本设置


set nocp
该命令指定让 VIM 工作在不兼容模式下。 在 VIM 之前, 出现过一个非常流行的编辑器叫
vi。 VIM 许多操作与 vi 很相似, 但也有许多操作与 vi 是不一样的。 如果使用“:set
cp”命令打开了兼容模式开关的话, VIM 将尽可能地模仿 vi 的操作模式。
也许有许多人喜欢“最正统的 vi”的操作模式, 对于初学者来说, vi 里许多操作是比较不方便的。
举一个例子, VIM 里允许在 Insert 模式下使用方向键移动光标, 而 vi 里在
Insert 模式下是不能移动光标的, 必须使用 ESC 退回到 Normal 模式下才行。
再举一个例子, vi 里使用 u 命令可以撤消一次先前的操作, 再次按下 u
时, 将撤消“撤消”这个动作本身, 也就是我们常说的“重复”(redo)。
而 VIM 里可以使用 u 命令撤消多步操作, “重复”使用的快捷键是 Ctrl
+ R。
使用兼容模式后, VIM 将放弃这些新的功能, 尽量模仿 vi 的各种操作方式。
只有在不兼容模式下, 才能更好地发挥 VIM 自身的特点。 Bram 爷爷强烈推荐大家使用
VIM 的不兼容模式, 滇狐也是这样推荐的。 请务必在你的 .vimrc 中的第一行写上:
“set nocp”。

set ru
该命令打开 VIM 的状态栏标尺。 默认情况下, VIM 的状态栏标尺在屏幕底部,
它能即时显示当前光标所在位置在文件中的行号、列号, 以及对应的整个文件的百分比。
打开标尺可以给文件的编辑工作带来一定方便。

set hls
搜索时高亮显示被找到的文本。 该指令的功能在 vimtutor 中已经有过介绍,
这里就不多说了。 其实似乎许多人并不喜欢这个功能。
set is
搜索时在未完全输入完毕要检索的文本时就开始检索。 vimtutor 对该命令也有过介绍,
滇狐并不喜欢这个功能, 因此滇狐自己的配置文件里是没有这条命令的。 但是周围有朋友很喜欢这个,
因此滇狐还是将它列在这里。
syntax on
打开关键字上色。 进行程序设计的朋友应该都知道关键字上色是什么东西,
因此这里就不多说了。 不进行程序设计的朋友不妨也打开这个功能, 虽然不一定能够用得着,
但这个功能其实也是很好玩的。
set backspace=indent,eol,start
设想这样一个情况: 当前光标前面有若干字母, 我们按下 i 键进入了 Insert
模式, 然后输入了 3 个字母, 再按 5 下删除(Backspace)。 默认情况下,
VIM 仅能删除我们新输入的 3 个字母, 然后喇叭“嘟嘟”响两声。 如果我们“set
backspace=start”, 则可以在删除了新输入的 3 个字母之后, 继续向前删除原有的两个字符。
再设想一个情况: 有若干行文字, 我们把光标移到中间某一行的行首, 按
i 键进入 Insert 模式, 然后按一下 Backspace。 默认情况下, 喇叭会“嘟”一声,
然后没有任何动静。 如果我们“set backspace=eol”, 则可以删除前一行行末的回车,
也就是说将两行拼接起来。
当我们设置了自动缩进后, 如果前一行缩进了一定距离, 按下回车后, 下一行也会保持相同的缩进。
默认情况下, 我们不能在 Insert 模式下直接按 Backspace 删除行首的缩进。
如果我们“set backspace=indent”, 则可以开启这一项功能。
上述三项功能, 你可以根据自己的需要, 选择其中一种或几种, 用逗号分隔各个选项。
建议把这三个选项都选上。
set whichwrap=b,s,,[,]
默认情况下, 在 VIM 中当光标移到一行最左边的时候, 我们继续按左键,
光标不能回到上一行的最右边。 同样地, 光标到了一行最右边的时候, 我们不能通过继续按右跳到下一行的最左边。
但是, 通过设置 whichwrap 我们可以对一部分按键开启这项功能。 如果想对某一个或几个按键开启到头后自动折向下一行的功能,
可以把需要开启的键的代号写到 whichwrap 的参数列表中, 各个键之间使用逗号分隔。
以下是 whichwrap 支持的按键名称列表:
b
在 Normal 或 Visual 模式下按删除(Backspace)键。
s
在 Normal 或 Visual 模式下按空格键。
h
在 Normal 或 Visual 模式下按 h 键。
l
在 Normal 或 Visual 模式下按 l 键。
在 Normal 或 Visual 模式下按左方向键。
>
在 Normal 或 Visual 模式下按右方向键。
~
在 Normal 模式下按 ~ 键(翻转当前字母大小写)。
[
在 Insert 或 Replace 模式下按左方向键。
]
在 Insert 或 Replace 模式下按右方向键。

set encoding=cp936
设置当前字符编码为简体中文。 这里还有一段能够自动判断文件的 encoding,
自动选择合适的编码的 .vimrc 代码, 感兴趣的话可以放到自己的配置文件中使用:

" Encoding settings
if has("multi_byte")
" Set fileencoding priority
if getfsize(expand("%")) > 0
set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1
else
set fileencodings=cp936,big5,euc-jp,euc-kr,latin1
endif
" CJK environment detection and corresponding setting
if v:lang =~ "^zh_CN"
" Use cp936 to support GBK, euc-cn == gb2312
set encoding=cp936
set termencoding=cp936
set fileencoding=cp936
elseif v:lang =~ "^zh_TW"
" cp950, big5 or euc-tw
" Are they equal to each other?
set encoding=big5
set termencoding=big5
set fileencoding=big5
elseif v:lang =~ "^ko"
" Copied from someone's dotfile, untested
set encoding=euc-kr
set termencoding=euc-kr
set fileencoding=euc-kr
elseif v:lang =~ "^ja_JP"
" Copied from someone's dotfile, unteste
set encoding=euc-jp
set termencoding=euc-jp
set fileencoding=euc-jp
endif
" Detect UTF-8 locale, and replace CJK setting if needed
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
endif
else
echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
endif
2 文本编辑设置
set sw=4
自动缩进的时候, 缩进尺寸为 4 个空格。
set ts=4
Tab 宽度为 4 个字符。
set et
编辑时将所有 Tab 替换为空格。
该选项只在编辑时将 Tab 替换为空格, 如果打开一个已经存在的文件, 并不会将已有的
Tab 替换为空格。 如果希望进行这样的替换的话, 可以使用这条命令“:retab”。

3 断行设置
set lbr
不在单词中间断行。 设置了这个选项后, 如果一行文字非常长, 无法在一行内显示完的话,
它会在单词与单词间的空白处断开, 尽量不会把一个单词分成两截放在两个不同的行里。
set fo+=mB
打开断行模块对亚洲语言支持。 m 表示允许在两个汉字之间断行, 即使汉字之间没有出现空格。
B 表示将两行合并为一行的时候, 汉字与汉字之间不要补空格。 该命令支持的更多的选项请参看用户手册。

4 C/C++ 编码设置
set sm
显示括号配对情况。 打开这个选项后, 当输入后括号 (包括小括号、中括号、大括号)
的时候, 光标会跳回前括号片刻, 然后跳回来, 以此显示括号的配对情况。
set cin
打开 C/C++ 风格的自动缩进。 打开了自动缩进后, 在编码的时候我们可以使用“V”命令选中一段文本后,
按“=”将这段文本重新调整缩进格式, 在一定程度上起到代码美化的作用。
另外, 打开了自动缩进后, 在使用 TERM 下的 vim 的时, 粘贴代码时常常会出现版式混乱的现象。
那是因为 TERM 并不知道你现在正在粘贴代码, 它直接“粘贴”动作向 vim
解释为键入, 因此 vim 便按照设置的自动缩进格式为你的代码调整了缩进。
不幸的是, 粘贴进去的代码中本身已经包含了缩进, 因此便出现了版式混乱的情况。
在 gvim 中就不会出现这个问题, 因为它能够知道你现在正在粘贴。
知道了这个症状的来由, 解决方案也就显而易见了: 在粘贴的时候把所有自动缩进都关闭,
粘贴完毕之后再打开。 一个个手工关闭自动缩进未免过于繁琐, vim 为我们提供了一个很好用的命令,
只要输入“:set paste”, 就可以关闭所有自动缩进。 粘贴完毕后再输入“:set
nopaste”就可以重新打开原有的自动缩进设置了。
set cino=:0g0t0(sus
设定 C/C++ 风格自动缩进的选项, 这里简要介绍一下这段代码里用到的选项的含义,
cino 支持的选项还很多, 更多选项请看用户手册。

// :0
//
// switch 语句之下的 case 语句缩进 0 个空格,也就是说不缩进,与 switch 块平
// 齐,使用这样风格:
switch (x)
{
case 1:
a = b;
break;
default:
}
// g0
//
// class、struct 等之下的访问权限控制语句,如 public、protected、private 等,
// 相对 class、struct 等所在的块缩进 0 个空格,与 class 等块平齐,使用这样的
// 风格:
class foo
{
public:
int a;
private:
int b;
};
// t0
//
// 如果函数返回值与函数名不在同一行,则返回值缩进 0 个空格,也就是说不缩进,如
// 下所示:
// set cino=t4
int
func1()
{
}
// set cino=t0
int
func()
{
}
// (sus
//
// 当一对括号跨越多行时,其后的行缩进前面 sw 指定的距离,效果如下:
int a = (1 + 2 + 3
+ 4 + 5 + 6
+ 7 + 8) * 9;
set ai
打开普通文件类型的自动缩进。 该自动缩进不如 cindent 智能, 但它可以为你编辑非
C/C++ 文件提供一定帮助。

5 其它设置
set selectmode=
不使用 selectmode。
set mousemodel=popup
当右键单击窗口的时候, 弹出快捷菜单。
set keymodel=
不使用“Shift + 方向键”选择文本, “Shift + 方向键”代表向指定方向跳一个单词。
如果你喜欢这项功能的话, 可以使用“set keymodel=startsel,stopsel”打开它。
set selection=inclusive
指定在选择文本时, 光标所在位置也属于被选中的范围。 如果指定 selection=exclusive
的话, 可能会出现某些文本无法被选中的情况。
colo torte
选择 torte 配色方案。 VIM 里内置了许多关键字上色的配色方案, 另外你还可以到网上下载更多配色方案,
或是自己编写。 点击“编辑”→“调色板”, 就能列出所有支持的配色方案。
你可以把“调色板”子菜单剪下来, 然后慢慢选择, 挑出一个你最喜欢的配色方案来。

6 图形界面设置
set nowrap
指定不折行。 如果一行太长, 超过屏幕宽度, 则向右边延伸到屏幕外面。
如果使用图形界面的话, 指定不折行视觉效果会好得多。
set guioptions+=b
添加水平滚动条。 如果你指定了不折行, 那为窗口添加一个水平滚动条就非常有必要了。
set guifont=Courier/ 9
设置图形界面下的字体。 你可以点“编辑”→“选择字体”, 然后在对话框中选出你喜欢的字体与字号,
选择完毕后, 先按几下 ESC 确认处在 Normal 模式下, 然后输入这条命令:“:set
guifont?” 回车后 gvim 屏幕最下方会显示出你当前所用的字体的名称与字号。
将获得的结果写到配置文件里面就可以了, 需要注意一点, 如果字体名称里面含有空格的话,
在抄的时候需要在所有空格前面加一个斜杠。

7 条件选择
同一个配色方案, 在 gvim 下和字符界面的 vim 下效果大相径庭, 滇狐个人的习惯是,
在 gvim 下使用 torte 配色方案, 在 vim 下使用 ron 配色方案。 因此我们有必要针对
gvim 和 vim 进行不同的设置。
另外, 前面我们在 gvim 下不使用折行, 开启水平滚动条, 但在 vim 下,
是没有滚动条可用的, 因此还是有必要为 vim 保留自动折行。
条件选择设置的格式如下:
if (has("gui_running"))
" 图形界面下的设置
set nowrap
set guioptions+=b
colo torte
else
" 字符界面下的设置
set wrap
colo ron
endif
********************************************************************************************

vi的一些配置和命令老是记不住,放在这里。先找了一篇类似的文章放在这里,以后会以此为基础不断更改,逐渐消化掉。
我的locale:
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8
我的vim版本:vim-7.0.174
我的.vimrc:
"中文问题
"输入中文
set encoding=utf8
"文件存储编码
set fileencoding=utf-8
set fileencodings=utf-8
set termencoding=utf-8
set enc=utf-8
"编程语法
syntax on
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
"set number
set cindent
set autoindent
# 自動判斷 big5 或 utf-8 會自動換編碼(Linux 設以下設定)
兩種方法:
1.
" 檔案存檔會存成utf-8編碼
"set fileencoding=utf-8
"
" 以下四個設下去. vim 編出來都是 utf-8 編碼的.
set fileencoding=utf-8
set fileencodings=big5,utf-8
set termencoding=big5
set enc=utf-8
" iconv -f big5 -t utf8 file.big5
2.
if has("multi_byte")
let $LANG="zh_TW.UTF-8"
set encoding=utf-8
setglobal fileencoding=big5
set fileencoding=big5
set bomb
set termencoding=big5
set fileencodings=utf-8,big5,euc-jp,gbk,euc-kr,utf-bom,iso8859-1
else
echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
endif
其它還有非常多功能.. 就下面再說囉.. :)
開啟顏色
syntax on
syntax off 關閉
" 將註解由深藍色變綠色
" hi Comment ctermfg=Green
" 搜尋到的字加 hilight
set hlsearch
" 將註解由深藍色變淺藍色
highlight Comment ctermfg=darkcyan
highlight Search term=reverse ctermbg=4 ctermfg=7
highlight Normal ctermbg=black ctermfg=white
一個tab鍵空四格, 以空白代替(按兩個 tab 就等於是 tab)
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
自動縮排
:set cindent
:set autoindent
:set cindent 取消
:set noautoindent 取消
:set noci 取消
數字行數
:set number (:set nu)
:set nonumber (:set nonu)
搜尋後不出現彩色make
:nohl
字首加字
:1,$s/^/#/g 在全部行首加上 #
:1,$s//home///g 將從頭到尾有/home/ 的字刪掉
字串取代
:1,$s/mysql_query/(/$sql/);/mysql_query(/$sql/) or die/(mysql_error/(/)/):/g
第一行取代到最後一行 1,$
編輯備份檔
vi -r filename
編輯一次兩個視窗
:new
Ctrl + w 切換視窗(Ctrl+w兩次, 或 Ctrl+w+ 上下鍵)
:e [tab]或filename開檔案編輯
編輯遠端ftp
:e ftp://url/filename
不自動換行
:set nowrap (一行太長會自動換到下一行)
輸入顏色
^[ 是 ESCAPE 鍵,
在 vi中, 先按 Ctrl-V 再按ESC就會出現了
shell 模式本來都是使用 bash.
若要改用 vi 來當預設的環境的話.
則在 .bashrc 最上面加入 set -o vi 即可.
(esc i 則進入 insert 模式, j.k 可以用上一次指令, 下一次指令)
若想要讓其它檔名可以支援 .php 的顏色設定
mkdir ~/.vim
vi filetype.vim
內容如下:
" my filetype file
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.ros setfiletype php
augroup END
這樣子就可以把 .ros 用 .php 的顏色設定
使用拼写检查功能
Vim
7 内置了一项与 Microsoft Word
类似的拼写检查功能,使用该功能可以检查出所拼写词语的错误。在默认情况下,这项功能是没有开启的。若是使用 GVim 的话,可通过“Tools
-> Spelling -> Spell check on”菜单命令开启。Vim
一旦发现拼写错误的词语,则以红色的波浪线标记。而使用以下命令可以执行拼写检查功能的相关操作:

:set spell-开启拼写检查功能
:set nospell-关闭拼写检查功能
]s-移到下一个拼写错误的单词
[s-作用与上一命令类似,但它是从相反方向进行搜索
z=-显示一个有关拼写错误单词的列表,可从中选择
zg-告诉拼写检查器该单词是拼写正确的
zw-与上一命令相反,告诉拼写检查器该单词是拼写错误的

使用括弧高亮显示功能
此特性在编码时非常具有帮助。对于如“{”、“}”之类的配对括弧,Vim 7 将高亮显示它们。如果不喜欢,可以使用“:NoMatchParen”命令禁用该功能。

使用自动补完功能

是一个非常酷的特性。当你在写代码的时候,可以使用该功能帮助你自动完成标记、关键字等等。此功能支持 C、(X)HTML(包含
CSS)、JavaScript、PHP、Python、Ruby、SQL、XML 等语言。在插入模式中,连续按“[Ctrl+x]
[Ctrl+o]”组合键可以打开该功能。你可以从弹出的列表框中进行选择。

使用分页(tabs)功能
此功能可让 Vim 同时打开多个文档进行编辑。其命令如下:

:tabe /path/to/file.txt-在一个新的 tab 页中打开文件
:tabnew-新建一个 tab 页
:tabs-查看 tab 页列表,通过“>”显示当前窗口、“+”显示可修改的缓冲区
:tabc-关闭当前的 tab 页
:tab split-在当前缓冲区使用新的 tab 页打开文件
:tabn-切换到下一个 tab 页
:tabp-切换到上一个 tab 页
:tabr[ewind]-转到第一个 tab 页
:tabf[irst]-与上一命令作用相同

使用撤销分支功能
可以使用 :undolist 命令查看缓冲区存在的撤销分支列表。而通过 :undo 命令则能够移到撤销的某个分支。
   ===============================================================

另一篇文章

================================================================

-> 向右方向键翻开折叠行代码

###################
进入vim的命令:

vim filename :打开或新建文件,并将光标置于第一行首
vim +n filename :打开文件,并将光标置于第n行首
vim + filename :打开文件,并将光标置于最后一行首
vim +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vim -r filename :在上次正用vim编辑时发生系统崩溃,恢复filename
vim filename….filename :打开多个文件,依次编辑

Vim配置:
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“/”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息
:set number / set nonumber :显示/不显示行号
:set ruler /set noruler:显示/不显示标尺
:set hlsearch 高亮显示查找到的单词
:set nohlsearch 关闭高亮显示
:syntax on #语法高亮
:set nu #显示行号
:set tabstop=4 #设置tab大小
:set softtabstop=4
:set autoindent #自动缩进
:set cindent #C语言格式里面的自动缩进

移动光标:
上:k nk:向上移动n行
下:j nj:向下移动n行
左:h nh:向左移动n列
右:l nl:向右移动n列
space:光标右移一个字符
Backspace:光标左移一个字符
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
^:移动光标到行首第一个非空字符上去
$:光标移至当前行尾
gg可以移到第一行
G移到最后一行
f<a>:移动光标到当前行的字符a上
F:相反
%:移动到与制匹配的括号上去(),{},[],<>等。
nG:移动到第n行上
G:到最后一行

屏幕翻滚类命令:
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏

Ctrl+b:向文件首翻一屏
Ctrl+f:向文件尾翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部

插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令
x或X:删除一个字符,x删除光标后的,而X删除光标前的
dw:删除一个单词
dnw:删除n个单词
dne:也可,只是删除到单词尾
do:删至行首
d$:删至行尾
dd:删除一行
ndd:删除当前行及其后n-1行
dnl:向右删除n个字母
dnh:向左删除n个字母
dnj:向下删除n行
dnk:向上删除n行
cnw[word]:将n个word改变为word
C$:改变到行尾
cc:改变整行
shift+j:删除行尾的换行符,下一行接上来了.

复制粘贴:
p:粘贴用x或d删除的文本
ynw:复制n个单词
yy:复制一行
ynl:复制n个字符
y$:复制当前光标至行尾处
nyy:拷贝n行

撤销:
u: 撤销前一次的操作
shif+u(U):撤销对该行的所有操作。

搜索及替换命令 :


在文件中查找

vimgrep keywords **/*
vimgrep keywords /目录/*

vimgrep keywords /目录/**

:cw 打开结果行

ctrl+双击w 在结果行与文件中切换

:q 退出结果行或文件

/pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
cw【newword】:替换为newword
n: 继续查找
. 执行替换
:s/p1/p2/g:将当前行中所有p1均用p2替代,g表示执行 用c表示需要确认
如 :%s/localhost/127.0.0.1/g
:n1,n2 s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换
:1,$ s/string1/string2/g:在全文中将string1替换为string2

书签:
m[a-z]:在文中做标记,标记号可为a-z的26个字母
`a:移动到标记a处

visual 模式:
v:进入visual 模式
V:进入行的visual 模式
ctrl+v:进如块操作模式用o和O改变选择的边的大小
在所有行插入相同的内容如include<,操作方法如下:
将光标移到开始插入的位置,按CTRL+V进入VISUAL模式,选择好模块后按I(shift+i),后插入要插入的文本,按[ESC]完成

行方式命令:
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之
若不指定n1,n2,则表示将整个文件内容作为command的输入

宏:
q[a-z]:开始记录但前开始的操作为宏,名称可为【a-z】,然后用q终止录制宏
reg:显示当前定义的所有的宏,用@[a-z]来在当前光标处执行宏[a-z]

窗口操作:
:split:分割一个窗口
:split file.c :为另一个文件file.c分隔窗口
:nsplit file.c: 为另一个文件file.c分隔窗口,并指定其行数
ctrl+w在窗口中切换
:close:关闭当前窗口

文件及其他:
:q:退出vi
:q!:不保存文件并退出vi
:e filename:打开文件filename进行编辑
:e! :放弃修改文件内容,重新载入该文件编辑
:w :保存当前文件
:wq :存盘退出
:ZZ:保存当前文档并退出VIM
:!command:执行shell命令command
:r!command:将命令command的输出结果放到当前行
:n1,n2 write temp.c 将本文件中的n1,到n2行写入temp.c这个文件中去
:read file.c 将文件file.c的内容插入到当前光标所在的下面
:0read file.c 将文件file.c的内容插入到当前文件的开始处(第0行)
:nread file.c 将文件file.c的内容插入到当前文件的第n行后面
:read !cmd :将外部命令cmd的输出插如到当前光标所在的下面

帮助:
:help :查看帮助文档,在这之中,按CTRL+] 进入超连接,按CTRL+O 返回。
:help subject :看某一主题的帮助,ZZ 退出帮助

其它常用:
:newtab 新建标签
:gt 转至下一个标签
:gT 转到上一个标签
:au GUIEnter * simalt ~x 启动时最大化

###################
i/I,a/A,o/O:插入
h,j,k,l:上下左右
ctrl+f:向下翻页
ctrl+b:向上翻页
v,V,ctrl+v:可视模式 n<>->n tab缩进
/[?]pattern:搜索
:%s/from/to/gc :询问替换
r/R:替换
d^:删至行首
D/d$:删至行尾
rx:删除一个字符
ynl/ynw:复制n个字符/单词
y$/Y:复制一行
ndd:删n行
p:粘帖
x:删除
u:取消上次操作
ctrl+r:回复上次操作

###################

" This is my _vimrc under windows platform
" and it can be used on *nix too
" all the difference of them is the font setting session
" happy Viming, guys!
" copyLeft (#) Abruzzi John

" autoload _vimrc
autocmd! bufwritepost _vimrc source %

" vim 定制
set linebreak " line break
set nocompatible " no compatible
set history=400 " history
set ruler
set number " line number
set hlsearch " highlight search
set noincsearch " no in C search
set expandtab " expand table
set t_vb= "close bell
set foldmethod=marker
set tabstop=4 " table step
set shiftwidth=4
set nobackup " don't backup
set smarttab " smart table
set smartindent " smart indent
set autoindent " auto indent
set cindent "cindent
set cursorline " hightlight cursor line

"set guioptions-=m " 取消顶部菜单栏
set guioptions-=r " 取消右边滚动条
set guioptions-=L " 取消左边滚动条
set guioptions-=T " 取消顶部工具条

colorscheme desert " color scheme

filetype plugin indent on " filetype setting
set completeopt=longest,menu " for code complete

" the following function is used for show the status bar on the buttom
function! CurrectDir()
let curdir = substitute(getcwd(), "", "", "g")
return curdir
endfunction
set statusline=/ [File]/ %F%m%r%h/ %w/ / [PWD]/ %r%{CurrectDir()}%h/ / %=[Line]/ %l,%c/ %=/ %P

" 字体
if has("win32")
set guifont=Courier_New:h10:cANSI
endif

" 设置语法高亮
if exists("syntax_on")
syntax reset
else
syntax on
endif

" plugin config begin

" NERDTree key-map
map <F10> :NERDTreeToggle<CR>

" plugin cofig end


" vim tab binding
map nt :tabnew %<cr> "open a new tab in normal mode
map tc :tabclose<cr> " close tab
map tn :tabnext<cr> " next tab
map tp :tabprev<cr> " preveiw tab


"绑定插入模式的hjkl
imap <c-j> <Down>
imap <c-k> <Up>
imap <c-h> <left>
imap <c-l> <Right>

" that's all, folks!

###################
常用插件:

1.NERDTree
2.tagList
http://www.vimer.cn/

=====================================================================

vim关于python的配置

=====================================================================


1. VIM python 自动补全插件:pydiction

这是一个相当不错的 Python 代码自动完成的脚本。

可以实现下面python代码的自动补全:
简单python关键词补全
python 函数补全带括号
python 模块补全
python 模块内函数,变量补全
from module import sub-module 补全
pydiction 插件安装
pydiction 1.0 之后版本安装配置

适用VIM7之后的版本。
1.python_pydiction.vim

将文件 python_pydiction.vim 放到 ~/.vim/after/ftplugin/ 路径下,如果这个路径不存在,你可以自己创建这个文件夹结构。(Windows下面的话放在目录类似的结构中)
2.complete-dict

将complete-dict文件放到你自己的某个路径下,后面的配置会用到这个文件,这个文件就是记录所有的python关键词。

我将这个文件放到 ~/.vim/tools/pydiction/complete-dict
3. 配置 .vimrc 文件

在 ~/.vimrc 文件中添加如下配置
"pydiction 1.2 python auto complete
filetype plugin on
let g:pydiction_location = '~/.vim/tools/pydiction/complete-dict'
"defalut g:pydiction_menu_height == 15
"let g:pydiction_menu_height = 20
pydiction 1.0 之前版本安装配置

为了使用这个功能,我把pydiction 放在了 ~/.vim/tools 目录中,并在 .vimrc 中增加如下设置:
" python auto-complete code
" Typing the following (in insert mode):
" os.lis<Ctrl-n>
" will expand to:
" os.listdir(
" Python 自动补全功能,只需要反覆按 Ctrl-N 就行了
if has("autocmd")
autocmd FileType python set complete+=k~/.vim/tools/pydiction
endif
pydiction 自动补全插件使用

pydiction 1.2 版本在VIM中直接用 <Tab> 键就可以实现自动补全。

在vim中键入 os.pa<Tab> 后出现的自动补全界面