发现以前记得很清楚的命令也变得模糊了,总是在需要用到的时候不能及时地想起来。我将自己会用到的命令记录在此,基本的移动和搜索以及正则表达式就不记录了,其它的只要是用过,哪怕只是一遍。
首先是自己Vim的全局配置:
set showmode 显示当前的模式
set number 显示行号
set nocompatible 使用Vim改进的兼容模式
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8
Vim 中当前编辑文件的字符编码方式,Vim保存文件时也会将文件保存为这种编码的方式
set encoding=cp936
Vim 内部使用的字符编码方式,包括Vim 的缓冲区、菜单文本、消息文本等。用户手册上建议只在.vimrc中改变它的值,事实上似乎也只有在.vimrc中改变它的值才有意义。另外在Windows里把cp936编码映射到GBK编码上了。
set guifont=consolas:h12 设置字体
set sw=4 设置自动缩进时的空格个数
set ignorecase 忽略大小写
set ts=4 设置<Tab>的空格数
set lbr 不拆分单词
map <F5> :set filetype=java<Enter> 映射<F5>键,设置当前文件为Java文件
set nobackup 不备份
set backspace=indent,eol,start
在Insert模式下退格键何时可以删除光标前的字符。选项中以逗号分隔的三项内容分别指定了Vim 可以删除位于行首的空格,断行,以及开始进入Insert模式之前的位置。
set autoindent 自动缩进
set showcmd 显示一个没有完成的命令已经完成的部分
set so=5 当光标离窗口上下边界的最小行距为5时自动滚动
set nowrap 不要折行
set sidescroll=10 查看光标所在字符的左右10个字符的上下文
set whichwrap 设置移动到行边界时可以跨界的按键
let $DESKTOP='c:\users\*\desktop' 设置桌面的环境变量(*为用户名)
map <C-m> :call CalCharCount()<cr> 映射命令ctrl+m调用统计字符个数的函数
统计字符个数的函数:
if !exists("*CalCharCount")
function CalCharCount()
exe '%s/\S/&/gn'
endfunction
endif
其次是常用的快捷键:
CTRL-f 屏幕向下移动一页
CTRL-b 屏幕向上移动一页
CTRL-] 跳转到标签
CTRL-T 弹出标签
CTRL-O 跳转到较早的位置
CTRL-G 文件当前位置信息
CTRL-U 文本向下滚动半屏
CTRL-D 文本向上滚动半屏
CTRL-O 跳回更早之前的位置
CTRL-I 跳回后来更新的位置
H 移动到屏幕第一行
M 移动到屏幕中间
L 移动到屏幕最后一行
zz 当前位置置于屏幕中央
zt 当前位置置于屏幕顶端
zb 当前位置置于屏幕底端
* 取当前光标所在的word,并将它作用目标字符串进行搜索
# *的反向版
`` 跳回
ma 在屏幕上定义一个标记a,用于跳转(大写代表全局标记)
`a 跳转到标记a所在的行和列
'a 跳转到标记a所在的行头
x 代表dl(删除光标下的字符)
X 代表dh(删除光标前的字符)
D 代表d$(删除光标到行尾的内容)
C 代表c$(修改到行尾的内容)
s 代表cl(修改一个字符)
S 代表cc(修改整行)
r 替换一个字符,并回到normal模式
. 重复上一次做出修改的命令
o visual模式下,让光标置于被选文本的另一端
O 矩形文本选择时,将光标置于同一行的左右两个角
p 将删除的内容取回,放在下一行或者光标后
p p的反向版,取回后放在前一行或者光标前
q{a-z} 命令记录,q为结束,@{a-z}为执行,@@执行上一次的命令记录
"*yy 将一行内容复制到剪贴板
"*p 将剪贴板的内容复制过来
"fyas 复制一个句子到寄存器f中
"fp 取出寄存器f中的内容
"wdaw 删除一个word并把它放到寄存器w中
daw 当光标在一个词的中间时,用于将词删除 aw(a word)
das 删除一个整句 as(a sentence)
cis 修改一个整句 is(insert sentence)
~ 改变当前字符的大小写,并将光标置于下一个字符
I 将光标置于当前行第一个非空白字符,并进行insert
A 将光标置于当前行尾,并进行insert
经常用到的命令:
:help pattern<CTRL-D> 同时列出所有匹配'pattern'的帮助主题
:helpgrep pattern 在所有帮助文件中搜索'pattern',并且定位到第一个匹配的位置
:cn 下一个匹配项
:cprev? :cN 上一个匹配项
:cfirst :clast 第一个和最后一个匹配项
:set matchpairs 设置匹配的括号
:set ruler 在右下角显示当前光标的行列位置
:set hlsearch 高亮显示搜索结果
:nohlsearch 取消当前的高亮显示
:set incsearch 在键入目标字符串的过程中就同时开始搜索
:set nowrapscan 会使搜索过程在文件结束(或开始)时就停止
:scriptnames 用于找到Vim的所有启动文件
:jumps 列出曾经跳转到的位置列表
:marks 列出标记列表
:set iskeyword& 设置选项值为默认值
:set iskeyword 设置一个单词中可以包含的字符(@代表所有字母)
:set list 显示制表符
:set cmdheight 设置信息显示区的高度
:set filetype 设置当前编辑的文件类型
:syntax enable 开启语法高亮
:syntax clear 暂时关闭语法高亮
:syntax off 彻底关闭语法高亮
:source $VIMRUNTIME/syntax/2html.vim 把当前文件转到HTML格式
:write >> log 将当前文件的内容追加到log文件的最后
:file file 重命名当前编辑的文件
:[高度]split [其他文件] 将窗口分隔为上下两个窗口,并定位到上面的窗口中
CTRL-W 切换当前活动窗口
:close 关闭当前窗口,可以阻止关闭最后一个窗口
:only 关闭除当前窗口以外的所有窗口
:new 打开一个新的窗口
CTRL-W+ 增加当前窗口的高度(可使用命令记数)
CTRL-w- 减少当前窗口的高度(可使用命令记数)
[高度]CTRL-W_ 指定固定的高度
:vsplit 垂直分隔
:vnew 垂直分隔窗口,并打开一个新的缓冲区
CTRL-W h 到左边的窗口
j 到下面的窗口
k 到上面的窗口
l 到右边的窗口
t 到顶部窗口
b 到底部窗口
K 提升窗口
H 向左移动窗口
J 向下移动窗口
L 向右移动窗口
:qall 退出所有窗口
:wall 保存所有更改过的窗口
:wqall 保存并退出所有窗口
:tabedit file 在新的标签编辑文件
gt 切换标签
:tabonly 关闭当前标签以外的所有标签
Shell命令:
vim -o file file... 为每一个文件打开一个窗口(水平分隔)
vim -O file file... 为每一个文件打开一个窗口(垂直分隔)
vim -R file 以只读方式运行Vim,可强制保存
view file 以只读方式运行Vim,可强制保存(Unix)
vim c:\mian.m $VIM/_vimrc 在Shell命令中启动Vim并编辑多个文件
:next 下一个编辑的文件
:wnext 先保存,再编辑下一个文件
:args 查看整个列表中的文件
:previous 上一个编辑的文件
:wprevious 先保存,再编辑上一个文件
:last 移到最后一个文件
:first 移到第一个文件
:2next 跳过两个文件
:set autowrite 每当需要的时候保存文件
noautowrite
:args *.txt 重新定义文件列表
CTRL+^ 两个文件中快速切换