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	      Cut the current line.
yy	      Copy the current line.
cc	      Cut the current line and leave the editor in insert mode.
D	      Cut from the cursor to the end of the current line.
Y	      Yank the whole line, just like yy. (Yes, it's inconsistent! You can use y$ to do what you would expect Y to do.)
C	      Cut from the cursor to the end of the current line and leave the editor in insert mode.
x	      Cut the current character. (This is sort of like a command-mode backspace.)
s	      Cut the current character and leave the editor in insert mode.
c{motion} (change) 删除后进入insert模式, 如 c$
d{motion} (delete) 删除后仍为command模式, 如 d$
y{motion} (copy)
<C-P>     代码提示/自动补全
c{motion} (change) 删除后进入insert模式, 如 c$
d{motion} (delete) 删除后仍为command模式, 如 d$
y{motion} (copy)
dd          Cut the current line.
yy          Copy the current line.
cc           Cut the current line and leave the editor in insert mode.
D            Cut from the cursor to the end of the current line.
Y             Yank the whole line, just like yy. (Yes, it's inconsistent! You can use y$ to do what you would expect Y to do.)
C             Cut from the cursor to the end of the current line and leave the editor in insert mode.
x             Cut the current character. (This is sort of like a command-mode backspace.)
s             Cut the current character and leave the editor in insert mode.
<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-^ —   切换缓冲区中的文件

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_0551.JPG

    IMG_0591.JPG

    IMG_0577.JPG

  • RSS My del.icio.us

  • My RSS