- 论坛徽章:
- 2
|
本帖最后由 月光xia漫步 于 2014-05-24 16:44 编辑
看了很多关于vim的使用技巧的帖子,自己也做了一些笔记,感觉如果对于vim的理解加深的话,可以提高平常的工作效率,所以,贴出自己汇总的vim的使用技巧,希望对大家有所帮助。
ymm注:如果希望查看原帖的话,下面都有链接。如下:
vim 技巧
1、vim中快速定位到当前光标所在变量或函数处:
gd
2、vim中进行变量名,函数名和字符串补全操作:
在linux下编写c语言程序,命名规范要求变量名,函数名是用“_”将单词分隔开的。
比如:
int value_name = 5;
采用这种方法的好处在于vim进行匹配时,比较方便。
在vim中使用ctrl+n 或 ctrl+p进行匹配。
当输入value_使用ctrl+n或者ctrl+p能够将后面的部分自动匹配。
3、vim进入头文件,从头文件中返回:
进入头文件:
将光标移动到指定的头文件中,在命令行中键入gf就进入指定的头文件中。
返回原文件:
当对头文件编辑结束后,键入ctrl+^就返回到原文件中。
4、查看与当前符号匹配的另外一半符号 // "" 或者''或者()或者[ ]或者{}等匹配出现的符号。
在vim中使用%可以匹配另外一半符号出现的位置。
void fun(int argc,char *argv)
{
//代码
}
当我们将光标放在第一个大括号哪里,想找到另外一个与之匹配的大括号时,使用%【Shift+5】。就可以了。
扩展阅读: http://wdqfirst.blog.163.com/blog/static/1133474112012101221027321/
1、在函数中查找man手册
K:光标定位在函数名字上,按下K,则自动跳转到man手册里,
退出后仍然回到函数中
2、看历史记录
q/ :在命令模式输入q/,vim会列出搜索的记录
q: :在命令模式输入q:,vim会列出冒号模式中操作的记录
扩展阅读: http://wenku.baidu.com/link?url= ... grLGy6caEl8LjdRuE5e
1、标示位置
你可以在档案中做些标记再随时返回被标记的位置.
m char (MARK) 把这个地方标示成 char
' char (quote character) 跳到被标为 char的那一行
'' (按两次') 回到刚才的位置
char 可以是小写的 a-z中的任一个 . 一个标记在除了下面的这两种情况外会一直存在
1) 重覆使用相同的标示 char .
2) 删掉了被标示的那一行.
2、文字段落
有时候一段一段的移动游标会比较方便.我们可以用 {,},(,) 来达到这些功能
{ (左大括号) 跳到上一段的开头
} (右大括号) 跳到下一段的的开头.
( (左小括号) 移到这个句子的开头
) (右小括号) 移到下一个句子的开头
[[ 跳往上一个函式
]] 跳往下一个函式
扩展阅读: http://blog.csdn.net/bigshady/article/details/6019963
1、命令行输出内容输入到文件中
:r !command
将command的输出插入到当前位置。
2、打开文件的时候,对比两个文件
vim -d file1 file2 直接打开两个文件对比
3、在编辑文件的时候,也可以编译了
:copen #将结果输出的窗口打开
:make #编译
双击错误跳转到错误出现地方
ymm注:双击不能跳转到错误出现的地方,但是通过“Enter”回车键可以达到跳转到错误的位置
ymm注:结果输出窗口和编辑窗口切换的方式是 Ctrl+w
4、光标移动
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
5、屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
6、光标移动
^ 行的第一个非空白字符
+ 下一行的开头
- 上一行的开头
(空格) 下一个字符
(回车) 下一行
7、代码排版
在符号{或者符号}上按=% 对当前{}之内的代码进行排版!
ymm注:和使用visual选择代码然后使用“=”排版代码方式一样。
扩展阅读: http://bbs.csdn.net/topics/350219702
1、全文反转
把文件内容反转
:g/^/m0
m-->move
0-->line No 1
试想,从第1行开始,每一行依次放在文件的开头处,会有什么结果???
2、为字符串重命名
由于vi 是建立在 EX 上的 所以 当键入 : 时就来到了 EX 命令状态
:ab string strings
例如 :ab usa United States of America ,
当你在文见里插入 usa 时
United States of America 就蹦出来了
:map keys new_seq
定义你当前 键盘命令
----------------------------ab命令解释----------------------------
ab命令:
ab命令可以将一长串字符用缩写来定义,这有点象Linux中的alias,比如Linux中的ll命令就是ls -l的别名,ab的语法为:
:ab abbr phrase
abbr就是对phrase的简写,在insert 模式中,输入abbr,再按非字母字符(比如空格,点号等)Vim就自动把phrase插入到光标处位置。此情景一般用在频繁输入的字符中,通常建议abbr选择使用频率很低的字符,比如Eclipse常用的一个快捷键syso,你可以定义成如下:
:ab syso public static void main(String[] args)
这样一来,每次输入syso的时候,整个main方法就自动插入到文本行了。如果你就是想输入'syso'这个原生字符串,那么您可以用下面这个命令取消:
:unab syso
列出当前定义的缩写有哪些可以用命令:
:ab
扩展阅读: http://liuzhijun.iteye.com/blog/1833814
----------------------------ab命令解释----------------------------
3、行首行尾替换
要在文本前加同样的字符用
%s/^/要加的内容/g
ymm注:即把行首换成要加的内容
要在文本后加同样的字符用
%s/$/要加的内容/g
ymm注:即把行尾换成要加的内容
4、删去全文
%表示全文
:%d
是删除全文
5、使用tags打开函数定义处
用vi进行coding时的使用技巧:
用ctags命令对当前目录下的c源程序扫描,生成tags文件
$ ctags *.c
这样,在vi里通过命令
:ta fun_name
就可以直接打开函数fun_name所在的文件,并将光标置于函数开头
6、指定行重定向到另一文件夹
:n,n1 w 文件名
把从n行到n1行写道另外一个文件中
n和n1都是行数
7、全字匹配
查找:
在一个单词上用*,就向下查找此单词,#是向上
8、
替换:
如有一文件,内容为:
aa
bb
cc
dd
用:
%s/.*/printf(\"& is :%d\\n\",&);/g
文件内容为变为:
printf("aa is :%d\n",aa);
printf("bb is :%d\n",bb);
printf("cc is :%d\n",cc);
printf("dd is :%d\n",dd);
ymm注:上述实则是一个替换,不过牵扯到了一些正则表达式
ymm注:"&" 表示为查找匹配到的内容。在使用UE的替换的时候,如果选择正则表达式UltraEdit的话,也可以使用"^1" "^2" 表示查找的第一个、第二个匹配的字符串.
9、显示文件信息
Ctrl+g:显示"文件名" line 34(光标位置) of 970(总行数) --3%--(比例)
10、设置是否显示不可见字符
:set list/:set nolist:显示/隐藏不可见字符;
ymm注:使用cat -A的时候,同样可以查看不可见字符
[billing_dx@bmcs1 b]$ cat -A main.cpp |head -n 4
#include <iostream>^M$
#include <stdlib.h>^M$
#include "plcafuns.h"^M$
#include "Log.h"^M$
扩展阅读: http://bbs.chinaunix.net/forum.p ... mp;fromuid=28621203 |
|