VIM

进入vi的命令

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

移动光标类命令

h:                     光标左移一个字符
l:                     光标右移一个字符
space:                 光标右移一个字符
Backspace:             光标左移一个字符
k或Ctrl+p:             光标上移一行
j或Ctrl+n:             光标下移一行
Enter:                 光标下移一行
w或W :                 光标右移一个字至字首
b或B :                 光标左移一个字至字首
e或E :                 光标右移一个字至字尾
):                     光标移至句尾
(:                     光标移至句首
}:                     光标移至段落开头
{:                     光标移至段落结尾
nG:                    光标移至第n行首
n+:                    光标下移n行
n-:                    光标上移n行
n$:                    光标移至第n行尾
G:                     到文件尾
gg:                    到文件首
H:                     光标移至屏幕顶行
M:                     光标移至屏幕中间行
L:                     光标移至屏幕最后行
0:                     光标移至当前行首
$:                     光标移至当前行尾
g[hijk]:               确保行太长仍可以按预期移动

屏幕翻滚类命令

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

复制命令

y$:           当前光标位置到行尾
y^:           当前光标位置到行首
Y:            复制当前行(yy)
yn:           复制从光标所在行起n行
.:            重复上一个操作
v:            按字选择
V:            按行选择
CTRL-v:       按块选择
以上3种方式选择文本后,可选择如下操作:
d:            将所选择文本剪切到剪切板
y:            将所选择文本复制到剪切板
dd	      剪切当前行
yy	      复制当前行
cc	      剪切当前行, 并使编辑器处于insert模式
D	      从当前光标开始至当前行尾部进行剪切
Y	      复制当前整行, 如 yy 一样.
              (是的, 这有些矛盾! 你完全可以用 y$ 做任何用 Y 所能做的事情.)
C	      从光标处开始到当前行尾部开始剪切, 并使编辑器处于insert模式.
x	      剪切当前字符
s	      剪切当前字符, 并使编辑器处于insert模式
c{motion}     删除后进入insert模式, 如 c$
d{motion}     删除后仍为command模式, 如 d$
y{motion}     从当前光标处开始复制
<C-P>         代码提示/自动补全

插入文本类命令

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

删除命令

ndw或ndW:           删除光标处开始及其后的n-1个字
do:                 删至行首
d$:                 删至行尾
ndd:                删除当前行及其后n-1行
x或X:               删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:             删除输入方式下所输入的文本

搜索及替换命令

/pattern:            从光标开始处向文件尾搜索pattern
?pattern:            从光标开始处向文件首搜索pattern
n:                   在同一方向重复上一次搜索命令
N:                   在反方向上重复上一次搜索命令
*:                   高亮光标所在位置上的词
#:                   高亮光标所在位置上的词
:s/p1/p2/g:          将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:     将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:       将文件中所有p1均用p2替换

常用命令

:n1,n2 co n3:         将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:          将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d:             将n1行到n2行之间的内容删除
:w:                   保存当前文件
:e filename:          打开文件filename进行编辑
:e!                   重新载入文件
: x:                  保存当前文件并退出
:q:                   退出vi
:q!:                  不保存文件并退出vi
:!command:            执行shell命令command
:n1,n2 w!command:     将文件中n1行至n2行的内容作为command的输入并执行之,
                      若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:           将命令command的输出结果放到当前行

寄存器操作

"?nyy:         将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw:         将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl:         将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p:           取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:           将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中

缓冲区浏览

:ls       —    可查看当前已打开的buffers
:b num    —    可切换buffer (num为buffer list中的编号)
:bn       —    buffer列表中下一个 buffer
:bp       —    buffer列表中前一个 buffer
:b#       —    你之前所在的前一个 buffer
CTRL-^    —    切换缓冲区中的文件
:bd            关闭buffer
:bw            彻底关闭buffer
:buffers       查看buffer列表 (:ls 也可以)

Tab 转 Space

set shiftwidth=4
set ts=4
set sw=4
set sts=4
set softtabstop=4
set expandtab

分割窗口

:split file               水平分割(:3split file 三行窗口)
:vsplit file              垂直分割
CTRL-W CTRL-W             切换窗口
CTRL-W W                  切换窗口
CTRL-W +                  扩大窗口(vertical)
CTRL-W -                  缩小窗口(vertical)
CTRL-W >                  缩放窗口(horizontal)
CTRL-W <                  缩放窗口(horizontal)
CTRL-W h                  移动到窗口左边
CTRL-W j                  移动到窗口下边
CTRL-W k                  移动到窗口上边
CTRL-W l                  移动到窗口右边
CTRL-W t                  跳转到最顶上的窗口
CTRL-W b                  跳转到最底下的窗口
:close                    关闭当前窗口(也可用:q,不过:close可避免误关最后一个窗口)
: only                    关闭其它窗口
:new                      打开一个新窗口(vnew)
:qall                     关闭所有窗口
:wall                     全部保存
:wqall                    全部保存并退出
:qall!                    放弃保存并退出

taglist

(本段内容来自vim使用进阶: 使用taglist插件)

在 taglist 窗口中
s                     是对tag按名字排序
<CR>                  跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o                     在一个新打开的窗口中显示光标下tag
<Space>               显示光标下tag的原型定义
u                     更新taglist窗口中的tag
s                     更改排序方式,在按名字排序和按出现顺序排序间切换
x                     taglist窗口放大和缩小,方便查看较长的tag
+                     打开一个折叠,同zo
-                     将tag折叠起来,同zc
*                     打开所有的折叠,同zR
=                     将所有tag折叠起来,同zM
[[                    跳到前一个文件
]]                    跳到后一个文件
q                     关闭taglist窗口
:TlistOpen            打开taglist窗口
:TlistClose           关闭taglist窗口
:TlistToggle          在打开和关闭间切换

文件浏览

:Explore 打开文件浏览器, 以下为在文件浏览器中的快捷键

<F1>        显示帮助
<cr>        如果光标下为目录,则进入该目录;如果光标下是文件,则用vim打开该文件
-           返回上级目录
c           切换vim的当前工作目录为正在浏览的目录
d           创建目录
D           删除文件或目录
i           切换显示方式
R           改名文件或目录
s           选择排序方式
x           定制浏览方式,使用你指定的程序打开该文件

VIM example.vimrc
http://www.vi-improved.org/vimrc.php
http://amix.dk/vim/vimrc.html

  • Highest Rated

  • My PicasaPhotos

    IMG_0676.JPG

    ff2d2ffa4907bb8458ee906b.jpg

    IMG_0658.JPG

  • RSS My del.icio.us

  • My RSS