龙 2010年01月12日 星期二 23:04 | 1832次浏览 | 2条评论
//纠错
如果你发现整个word键入有误, 可以使用 CTRL-W
如果发现整行键入的内容都弄乱了, 可以使用 CTRL-U 删除它来重新开始,同时这会保留光标之后的字符并且保持原有的缩进
//补全
CTRL-P 编辑时自动补全一个词
如果你自己清楚要找的东西, 你可以用以下命令来补全这样一些特殊
的文档元素:
CTRL-X CTRL-F 文件名
CTRL-X CTRL-L 整行内容
CTRL-X CTRL-D 宏定义(也包括那些在include文件里定义的宏)
CTRL-X CTRL-I 当前文件和被当前文件include的文件
CTRL-X CTRL-K 来自一个字典文件的word
CTRL-X CTRL-T 来自一个thesaurus的word
CTRL-X CTRL-] tags
CTRL-X CTRL-V Vim的命令行
CTRL-A 编辑器会插入你上一次在insert模式下录入的内容
CTRL-@ 命令基本与 CTRL-A 一样, 不同是它在插入之后会退出Insert模式.
CTRL-Y 命令会插入当前光标之上的一行中相同位置字符
CTRL-E 与CTRL-Y相似, 不过它插入的是当前行之下的那一行中同列的字符
CTRL-R {register} 可以在当前位置插入指定寄存器 register 的内容
CTRL-O {command} 可以在Insert模式下执行任何一个Normal模式下的命令
CTRL-V 可以保证你键入的下一个字符被原封不动地被录入 , 如 插入一个escape字符: CTRL-V<Esc>
你也可以使用CTRL-V {digits}来插入一个由{digits}指定其ASCII码的字符
要用十六进制来表示你的ASCII, 在CTRL-V后面附加一个"x"
你也可以用"o"让Vim把接下来的数字视为8进制的
接下来的两个方法还可以让你键入一个16bit或32bit的数字:
CTRL-V u1234
CTRL-V U12345678
//特殊字符
有一些字符在键盘上没有对应的键. 比如表示版权的字符. 要在Vim中输入这些字符可以使用 digraphs, 它用两个字符来表示一个有意义的符号
:digraphs 可以让你查看都有哪些digraphs可用
要输入一个?号, 可以通过键入: CTRL-K Co
你也可以定义你自己的digraphs
:digraph a" |d
这个定义是说CTRL-K a"会实际插入一个?字符
//缩写
:iabbrev ad advertisement 自定义缩写( 将 ad 设置为 advertisement 的缩写)
可以用":iab"代替完整的命令名":iabbrev"
:iabbrev 用于 Insert 模式下的缩写定义
:cabbrev 用于 命令行 模式下的缩写定义
:abbreviate 用于 Insert和命令行 模式下的缩写定义
:abbreviations 列出已定义的缩写
:unabbreviate ad 删除缩写ad
:abclear 移除所有的缩写
//格式化文本 ------------------------------------------
如果你设置了'textwidth'选项, Vim就会自动换行.一行最多有30个字符. 可以使用下面的设置:
:set textwidth=30
gq 重新格式化
一个使用"gq"时非常常用的文本对象是段,试一下命令:
gqap
"ap"意为"a-paragraph"
//对齐文本
要让一个范围的行居中, 使用下面的命令:
:{range}center [width]
[width]是一个用于指定行宽的可选参数. 如果不指明[width], 它的默认值取自'textwidth'. (如果'textwidth'的值是0, 就取80)
:{range}right [margin] 右对齐
:{range}left [margin] 左对齐
左右对齐
Vim并没有一个内置的命令来使文本左右对齐. 不过, 有一个不错的
宏包可以实现它一功能. 要使用该宏包, 执行下面的命令:
:runtime macros/justify.vim
//缩进和制表符
'autoindent'选项可以自动插入缩进:
:set autoindent
接下来的新行将会沿用其前一行中所使用的缩进
增加缩进
要增加一行的缩进量, 使用">"操作符命令.用">>"命令, 这会增加当前行的缩进量
每次缩进量增减的单位由选项'shiftwidth'指定. 其默认值是8
设置该选项:
:set shiftwidth=4
可以通过'softtabstop'选项:
:set softtabstop=4
让一个制表符只插入4个字符宽度的缩进
这里还是建议把'tabstop'设置为8. 毕竟这是大众标准
//处理长文本行
如果没法使用滚动条或者有你也不想用它 , 你可以用下面的命令来左右移动:
zh 向右滚动
4zh 向右滚动4个字符
zH 向右滚动半个窗口的宽度
ze 向右移动使当前光标成为最右端的可见字符
zl 向左滚动
4zl 向左滚动4个字符
zL 向左滚动半个窗口
zs 向左移动使当前光标成为最左边的可见字符
//word的绕行显示
有时候在生成被另一个程序读取的文件时, 可能会要求一段内容不能有断行. 但使用'nowrap'的话又不能看到整个句子的全貌.
'wrap'选项打开的话, 又可能会把一个 ""词"" 从中间硬生生折到下一行去显示, 让你看起来很费劲.
一个好办法是仍然打开'wrap', 同时打开'linebreak'选项.这样Vim就会在适当的地方折叠显示长的文本行. 同时文本的内容本身不受影响
相关选项:
'breakat'指定了可以断行的字符.
'showbreak'可以指定一个字符串显示在接续显示的行的开头.
把'textwidth'设置为0可以避免自动断行.
//移动可视屏幕行
"j"和"k"命令可以上下移动文本行. 这两个命令作用于长的文本行
时每次移动的屏幕显示的行可能会多于1行
要精确地每次只移动一个屏幕显示行, 使用"gj"和"gk"命令,如果一个长行需要折叠显示, 这两个命令就会只移动一个屏幕显示行.
//合并多行文本
如果你的每段文本现在都是以空行分隔的, 下面的命令可
以把每个段放到同一行上:
:g/./,/^$/join
:g/./ 一个全局命令, 查找那些至少有一个字符的行.
,/^$/ 指定一个范围, 从当前行开始(非空行)直到一个空行.
join ":join"命令把指定范围内的行连为一行.
//编辑表格
假设你正在编辑这面这样的一个四栏表格:
Display
nice table test 1 test 2 test 3
input A 0.534
input B 0.913
现在需要在第3栏里输入数字. 最普通的做法是移到第二行去, 使用命令"A", 然后输入一些空格, 对齐位置后输入你的数字.
对于这类编辑任务有一个特殊的选项:
:set virtualedit=all
现在你可以把光标移到空无一物的虚位置上去了. 这叫"虚空白"
下面的命令使光标移动命令的行为恢复到正常状态:
:set virtualedit=
当要将一个制表符替换掉时,使用"r" 命令可能会弄乱整个内容
"gr"命令总是让被替换的文本占据它所应有的屏幕空间.空出的间隙会以额外的空格或制表符来填充
Zeuux © 2024
京ICP备05028076号
回复 Ford Guo 2010年01月14日 星期四 16:06
我最常用
:)