"x"命令可以删除一个字符
"d"命令可以后跟任何一个位移命令,它将删除从当前光标起到位移的终点处的文本内容dw
"c",改变命令例如cw c2w "cc"命令可以改变整行
"r"命令不是一个操作符命令。它等待你键入下一个字符用以替换当前光标下的那个字符
"."命令会执行上一次所执行的更改命令
"$"命令是移动光标到行尾
"w"看作是向右移一个word的命令
以匹配一个括号为目的的移动 %
"G"命令 2 。指定一个命令计数,这个命令就会把光标定位到由命令计数指定的行上
当你用"G"命令从一个地方跳转到另一个地方时,Vim会记得你起跳的
位置。这个位置在Vim中是一个标记。使用下面的命令可以使你跳回到你
刚才的出发点:``
自定义标记‘ma’定义了一个a标记,‘`a’跳转到a标记
:marks看关于标记的列表
' 进行此次跳转之前的起跳点
" 上次编辑该文件时光标最后停留的位置
[ 最后一次修改的起始位置
] 最后一次修改的结束位置
"H"意为Home, "M"为Middle, "L"为Last
CTRL-U、CTRL-D 向上上下滚半屏
简单搜索
/include搜索include单词 n查找下一个搜索目标N相反
你以"d"或"x"这样的命令删除文本时,被删除的内容还是被保存了起来。你还可以用p命令把它取回来
"P"命令与"p"一样取回被删除的内容,不过它把被取回的内容置于光标之前。
你可以多次取回被删除的内容。其内容取之不竭
也可以对命令"p"和"P"命令使用命令记数 3p
交换两个字符
"xp"。它的工作如下:"x"删除字符e并把它放入一个寄存器中"p"命令把被删除的e再放回
到当前光标之后
"y"是一个操作符命令复制命令可以使用命令计数器 "yy"命令复制一整行"yw"
剪切板
"*yy 复制一行到剪切板 "*p粘贴剪切板
"R"命令会让Vim进入replace模式。在此模式下,每个键入的字符都会替换掉当前光标下的字符。直到你键入<Esc>结束该模式
定制自己的vim
如果你已经有了一个vimrc文件(比如说系统管理员已经为你配好
了),可以这样来打开:$MYVIMRC
~/.vimrc
set nocompatible 关闭vi兼容
set backspace=indent,eol,start
这条命令告诉Vim在Insert模式下退格键何时可以删除光标之前的字符。选项中以逗号分隔的三项内容分别指定了Vim可以删除位于行首的空格,断行,以及开始进入Insert模式之前的位置。
if has("vms")
set nobackup
else
set backup
endif
这段脚本告诉Vim在覆盖一个文件之前备份该文件。
set ruler 总是在Vim窗口的右下角显示当前光标的行列信息。
set incsearch 在你键入要搜索的字串的同时就开始搜索当前已经键入的部分
filetype plugin indent on
这个命令开启了Vim的三种智能:
1. 自动识别文件类型
你开始编辑一个文件时,Vim就会自动识别它是何种类型的文
件。比如说你打开了"main.c", Vim就会根据它的".c"扩展名知
道它是一个类型为"c"的C语言源程序文件。当你编辑一个文件
其第一行是"#!/bin/sh"时,Vim又可以据此判断它是一个类型
为"sh"的shell脚本文件。
2. 用文件类型plugin脚本
不同的文件类型需要搭配适合于它的编辑选项。比如说你在编辑一
个"c"文件,那么打开'cindent'就非常有用。这些对某种文件类型
来说最常用的选项可以放在一个Vim中叫文件类型plugin的脚本里。
你还可以加上你自己写的
3. 使用缩进定义文件
编 辑 程 序 的 时 候 , 语 句 的 缩 进 可 以 让 它 自 动 完 成 。Vim为
众 多 不 同 的 文 件 类 型 提 供 了 相 应 的 缩 进 方 案
添加一个plugin
Vim的功能可以通过向它添加plugin得以扩展。所谓plugin不过是一个Vim会自动载入执行的脚本。把一个脚本放入你的plugin目录就可以了,非常容易。
plugin基本上分为两类:
全局的:用于所有文件
专用于某类型文件的:只用于特定类型的一类文件
下面先说全局的plugin,接下来是专用于某种文件类型的plugin
你启动Vim时,它会自动载入一些全局的plugin,你不必额外地
做任何事情。这些plugin 定义了使用率很高的一些功能,但它们是
以一个Vim脚本的形式而不是通过内建于Vim可执行文件内来提供。
得到一个全局的plugin文件
1. 有一些随Vim一起发行。位于目录$VIMRUNTIME/macros以及它的子目
录
- 从网上下载,
plugin的位置
系统 相应的plugin目录
Unix ~/.vim/plugin/
PC and OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin
Mac OS X ~/.vim/plugin/
除 了 直 接 把plugins放 入plugin/目 录 之 外 , 可 能 更 好 的 选 择
是 把 它 们 分 门 别 类 归 置 到plugin/的 下 一 级 子 目 录 中 。 比 如
象" /.vim/plugin/perl/*.vim"这样来安置所有跟Perl 相关的plugins。
Vim的发布版中已经包括了针对不同文件类型的相应plugin,你可以
使用下面命令开启对它的应用:
:filetype plugin on
编辑多个文件
目前为止我们使用Vim的方式还是为每一个要编辑的文件运行一
次Vim。这是最简单的用法。命令
:edit foo.txt
如果你想编辑另一个文件,但又不想保存当前文件中的改动 1 ,你可
以使它变为一个隐藏的缓冲区:
:hide edit foo.txt
查看buffer?
:ls,
以为buffer的基本单位是单个文件,所以ctrl+o/i 所看到的位置其实是在buffer中存储的
列表中%代表当前缓冲区
另外也可以使用:bn,:bp来切换下一个,上一个
启动VIM时编辑多个文件:
vim one.c two.c three.c
该命令启动Vim并告诉它你要编辑3个文件。Vim将在启动后只显示第
一个文件。完成该文件的编辑后,可以以命令:
:next
但多数情况下人们还是要保存工作成果并继续下一个文件的编辑。有
一个命令合并了这个过程:
:wnext
查看整个列表中就有哪些文件,使用命令:
:args
要回到前一个文件:
:previous
要移到最后一个文件::last
到第一个:first
:args five.c six.c seven.h 编辑另外一个文件列表
要在两个文件间快速切换,使用CTRL-^
:set backup 备份文件
生成的备份文件名将是原文件名后面附加一个~。如果原文件
是data.txt, 则生成的备份文件是data.txt~。
:set backupext=.bak自定义备份文件后缀
:set patchmode=.orig让VIM保存文件原始版本
在文件间复制粘贴
将光标移到某处文件并按
下"v"。该命令将开始Visual模式。现在把光标移到要复制文件的末尾按
下"y"
现在开始编辑你希望把复制的内容放入其中的文件。把光标置于你希
望复制内容的地方,用"p"把此前复制的内容粘贴到这里。
使用寄存器
一 个 寄 存 器 只 是Vim用 来 存 放 文 本 的 地 方 。 这 里 我 们 只 用
从a到z这26个字母作为寄存器的名字(稍后你会发现还有其它可用的寄
存器)。来把一个句子复制到名为f的寄存器中
把3个整行的内
容放到寄存器l中 -----"l3Y
“l3p 将寄存器i的内容放在光标后,可以再任意文件标签中粘贴复制
删除了一个word并把它保存在名为w的寄存器 "wdaw
向文件中追加内容
:write >> logfile
查看文件
view file
CTRL-W w命令可以切换当前活动窗口
:only 关闭除当前窗口外的所有其它窗口
:split two.c 为另一个文件分隔出一个窗口 :vsplit
:new 打开一个新窗口 :vnew
:3split alpha.c 打开了一个高度为3行的新窗口
CTRL-W + 增加高度 4 CTRL-W +
CTRL-W - 减小高度
CTRL-W h 到左边的窗口
CTRL-W j 到下面的窗口
CTRL-W k 到上面的窗口
CTRL-W l 到右边的窗口
CTRL-W t 到顶部窗口
CTRL-W b 到底部窗口
以上的hjkltb 换成大写就是移动当前窗口位置
:qall 针对所有窗口操作的命令 关闭所有
:wall 保存所有 wqall
vim -o one.txt two.txt three.txt 为每一个文件打开一个窗口
vimdiff main.c~ main.c查看两个文件不同 不是在vim中
:tab split打开新页签
:gt 切换页签
给文本设置对其方式
1,5center 40 1-5行居中对齐 行宽40 ,也可以用left right
设置缩进
1,5 4>> 1-5行 4个空格位缩进行
:read patch 将文件patch的内容读到当前文件
:.write >> collection 想目标文件追加
:.,$write! tempo 从当前行. 到尾行$的内容覆盖到tempo
:read !ls读取命令输入
CTRL-L重绘屏幕
灾难恢复
vim -r help.txt
如果你在编辑一个没有指定文件名的缓冲区时死机了,可以通过一个
空字符串作为要恢复的"文件名":
vim -r ""
确保你所在的目录是正确的,否则Vim会找不到正确的交换文件
挂起与恢复
象其它的Unix程序一样Vim也可以用CTRL-Z来挂起。该命令停止Vim的
执行使你回到启动Vim的shell中去。你可以做些别的事。完了再用"fg"命
令回到Vim.
'0
每次退出Vim时它都会创建一个特殊的标记。最后的一个是'0。上次
的'0现在会变成'1,原来的'1成了'2,如此类推,原来的'9就丢掉了。
:edit . 打开文件浏览器
在"../"上按下<Enter>则会上溯到当
前目录的父目录。"-"命令也是殊途同归
<Enter> 在当前窗口中打开文件
o 打开一个水平分隔的窗口显示文件
v 打开一个垂直分隔的窗口显示文件
t 在一个新标签页中打开文件
c 将当前目录切换到浏览器正打开的目录。
R 更改当前光标下的文件,Vim会提示你输入一个新的文件名
D 删除当前光标下的文件名。 Vim也会提示你进行确认
:Explore [目录名] 浏览指定的目录或当前目录
:Explore ftp://somehost/path/to/dir/
:e scp://somehost/path/to/dir/
:cd VeryLongFileName cd切换工作目录
lcd"命令。所有的窗口都共享同一个工作
目录。一旦在其中一个窗口中用":cd"命令改变了工作目录,其它窗口中
的工作目录也将随之改变。
对一个窗口使用":lcd"后它的工作目录会被记录下来
假设你想知道头文件"inits.h"中的内容。只需将光标置于该文件上
然后键入:gf
Vim就会找到并编辑该文件。
如果这个文件并不在工作目录下呢?此时Vim会使用在'path'选项中
定义的目录去查找它。该选项的内容是一个以逗号分隔的目录名列表。
:find inits.h 查找文件
:hide edit two.txt 隐藏当前缓冲区打开新文件
:ls 列出所有缓冲区
:buffer 2 编辑缓冲区2
自定义文件类型
创建你自己的运行时目录。在Unix系统上通常是"~/.vim"。在该
目录下创建名为"ftplugin" 1 的目录:
mkdir ~/.vim
mkdir ~/.vim/ftplugin
如果你不用Unix,看一看'runtimepath'选项的设置,找出Vim会在哪
里寻找"ftplugin"目录
2。创建文件"~/.vim/ftplugin/c.vim"
如果这个目录下已经有了一个同名文件。你就要停下来仔细检查一下
两个文件是否会引起冲突,如果没问题,你可以把要加入的新文件更名一
下:
mv thefile ~/.vim/ftplugin/stuff_too.vim
划线用于分隔用于标识文件类型的部分和其它部分,下划线其后的
部分可以自由命名。如果你用"otherstuff.vim"这样的名字,Vim可不能
识别它,它只会在文件类型是"otherstuff"时被载入。
文件类型plugin的文件名一般形式是:
List
ftplugin/<filetype>.vim
ftplugin/<filetype>_<name>.vim
ftplugin/<filetype>/<name>.vim