Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25149
  • 博文数量: 9
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-27 19:18
文章分类
文章存档

2008年(9)

我的朋友

分类: LINUX

2008-09-01 10:35:12

1.基本操作
x删除一个字符
dd删除一行
J删除本行的回车符,把下一行并入本行末尾
r字符替换光标所在字符为新字符
^ $分别是光标移到行首和行末
数字G移动光标到第若干行,如果直接按 G 则移动到最后一行


:new 文件名 打开或新建文件(同时关闭当前文件)。如果不指定文件名或者文件名不存在则是新建文件

2. 复制和粘贴

为了便于选取文本,VIM 引入了可视(Visual)模式。要选取一段文本,首先将光标移到段首,在 普通模式下按 v 进入可视模式,然后把光标移到段末。需要注意,光标所在字符是包含在选区中的。这时 可以对所选的文本进行一些操作,常用的(可视模式)命令有:

x 或 d剪切(即删除,同时所选的文本进入剪贴板)
y复制
r字符所有字符替换为新字符
u U ~分别是所有字母变小写、变大写、反转大小写
> <分别是缩进和反缩进

当输入了命令以后,VIM 将回到普通模式,这时可以按 p 或 P 进行粘贴。普通模式下有关 复制和粘贴的命令:

v进入可视模式
p 或 P 在当前位置粘贴剪贴板的内容,p 粘在光标所在字符后面,P 粘在前面



3. 高级使用

关于一个项目的跟踪使用
1.ctags  -R  *                #建立跟踪TAGE

2.Vim -t main()                    #可以跟踪到项目里的函数所在文件

3.:ts                             #相同函数在不同文件里的所以显示出来

4:tn                                     #下一个

5:tp                                     #上一个                                

6: ctrl+]                                  #连接到

7: ctrl + T                                #返回

4.3 撤销和恢复

编辑过程中出现错误在所难免,不过没有关系,VIM 允许无限次的撤销。只要你 没有关闭文件,你甚至可以一直撤销下去,回到几个小时以前刚打开这个文件开始工作时的状态。

u撤销(Undo)上次所做的修改
恢复(Redo)上次撤销的内容
4.5 插入补全

在插入模式下,为了减少重复的击键输入,VIM 提供了若干快捷键,当你要输入某个 上下文曾经输入过的字符串时,你只要输入开头若干字符,使用快捷键,VIM 将搜索上下文,找到 匹配字符串,把剩下的字符补全,你就不必敲了。这样,编程序时你起多长的变量名都没关系了,:-) 而且还可以减少输入错误。我认为,插入补全是 VIM 最为突出的一项功能。

i 向上搜索,补全一个词。例如,上文中出现过 filename 这个词,当你想再输入 filename 时,只要按 f 即可。假如 VIM 向上搜索,找到以 f 开头的第一个匹配不是 filename,你可以继续按 搜索下一个匹配进行补全。当然,如果你想一次 就成功,你可以多输入几个字符比如 filen 再按 补全
i向下搜索,补全一个词
i 补全一行。比如你写过一行 for (int i = 0; i < 100; i++),你想再写一模一样的一行,只要输入 for 即可。如果补全出来的不是你想要的那一行,你可以按 选择上一个或下一个匹配行
i 在文件系统中搜索,补全一个文件名

如果按 补全一个词,在当前文件中没有找到匹配,VIM 将搜索 #include 语句中的文件,而文件的位置将在 path 中搜索。

4.6 键的定义

在 VIM 中你可以定义一个键,按了这个键等于按了某一串预定的键。比如
:map! ddi
表示如果你在插入模式下按 就相当于连续按了 ddi,这将会使 VIM 退回到普通模式,删除一行,再进入插入模式。

map 命令有许多变化形式,每种变化形式所定义的键只在某些模式下有效,而在其它模式下 无效。你需要根据情况使用正确的变化形式:

:nmap键只对普通模式有效
:imap键只对插入模式有效
:vmap键只对可视模式有效
:cmap键只在命令行下有效
:map键在普通模式和可视模式都有效
:map!键在插入模式和命令行下都有效

还要注意,如果你定义 :map d di 这将引起循环定义错误。这时,你需要使用 :noremap d di 来定义。同样,noremap 也有对不同模式的变化形式。

比如,你想在文件的每一行的倒数第二个字符处插入字符串“abc”,你可以定义
:nmap $hiabcj
在普通模式下按一次 将会:光标移到行末,光标左移一格,进入插入模式,输入“abc”,退回到 普通模式,光标下移一行。不停地按 将解决问题。这是我临时处理多行重复操作的 常用手段,当然,这是一种笨办法。:-) 而上文写到的对 的定义则是 map 更复杂的用法。你还可以定义
:map :w:!gcc -o %< -I/usr/include/qt -lqt %
:map :!./%<
实现按 编译当前文件,按 执行。

在插入补全当中提到的补全一行需要按 ,如果你觉得麻烦,你可以定义
:inoremap
减少击键次数。同样,对 也可以作类似定义。


阅读(809) | 评论(0) | 转发(0) |
0

上一篇:Awk学习笔记

下一篇:正则表达式学习笔记

给主人留下些什么吧!~~