Posts Tagged ‘vim’

vim技巧:php函数自动补全

Posted by 机器人 on 26th 一月 2010 in vim

1. 下载文件function.txt,function.txt里面含有所有php函数。

http://cvs.php.net/viewvc.cgi/phpdoc/funclist.txt

2. 将funclist.txt放到~/.vim/目录下,命名为php_funclist.txt。

3. 在~/.vimrc中添加如下代码.

set dictionary-=~/.vim/php_funclist.txt dictionary+=~/.vim/php_funclist.txt
set complete-=k complete+=k

Read the rest of this entry »

vim技巧:多行注释换行时自动加上空格和星号

Posted by 机器人 on 26th 一月 2010 in vim

vim中,多行注释换行时,回车自动加上空格和星号。
效果如下:

/**
  *
  * 回车自动加上空格和星号

Read the rest of this entry »

vim技巧:折叠快捷键

Posted by 机器人 on 25th 一月 2010 in vim

以前用的挺熟的,一段时间不用了,快捷键又忘了,不得不重新再看手册,今天专门整理一下,以后查找起来也比较方便。

zc 折叠,只折叠最外层的折叠
zC 对所在范围内所有嵌套的折叠点进行折叠,包括嵌套的所有折叠.
zo 展开折叠,只展开最外层的折叠.
zO 对所在范围内所有嵌套的折叠点展开,包括嵌套折叠.
[z 到当前打开的折叠的开始处。
]z 到当前打开的折叠的末尾处。 Read the rest of this entry »

vim替换^M字符

Posted by 机器人 on 25th 一月 2010 in vim

替换^M字符
在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”。有几种方法可以处理。

1.使用dos2unix命令。一般的分发版本中都带有这个小工具(如果没有可以根据下面的连接去下载),使用起来很方便:
$ dos2unix myfile.txt
上面的命令会去掉行尾的^M。

2.使用vi的替换功能。启动vi,进入命令模式,输入以下命令: Read the rest of this entry »

vim同时打开多个文件

Posted by 机器人 on 14th 八月 2009 in vim

有时候,需要同时打开多个文件进行编辑,比如我们需要修改当前文件夹下的所有.html文件,那么使用vim可以很方便让你完成这件事,并且这些文件之间的切换自如。这就是下面需要谈到的使用vim同时打开多个文件。

1. 打开文件1.html,2.thml,3.html

~@ vim 1.html 2.html 3.html

或者

~@ vim *.html

2. 文件间切换
移动一个文件

:bn

移动到前一个文件

:bp

或者通过快捷键

CTRL+SHIFE+6

快速切换。

提示:在vim7.0后,可以通过加一个参数-p为多个文件添加显示标签。

机器人 2009年08月14日 15:27 于 北京 晴(当前温度34℃)

linux下的十六进制编辑器

Posted by 机器人 on 28th 七月 2009 in vim

vim 正常打开文件

vim file

以十六进制方式查看

:%!xxd

还原,重新读入

:%!xxd -r

机器人 2009-07-28 16:19 于 北京 阴

关于vim映射快捷键的补充

Posted by 机器人 on 26th 六月 2009 in vim

前几天写了 vim执行php或者c/c++的快捷键,但有一个缺点,就是必需为不同的文件类型映射不一样的快捷键,如果所有文件都用F5来执行多好!!

感谢小黑同学今天的提醒,可以考虑用autocmd(自动命令)来实现,不同的文件类型,运行不同的映射机制。
配置如下:

autocmd! BufNewFile,BufReadPost  *.php nmap < F5 > < ESC >:w< cr >:!clear && php -q < C-R>%< cr >
autocmd! BufNewFile,BufReadPost  *.cpp nmap < F5 > < ESC >:w< cr >:!clear && g++ < c -R >% -o test && ./test< cr >
autocmd! BufNewFile,BufReadPost  *.c   nmap < F5 > < ESC >:w< cr >:!clear && gcc < c -R >% -o test && ./test< cr >

这样对php,c/c++都可以使用F5来执行。

机器人 2009-06-24 16:48 于 北京 晴

vim执行php或者c/c++的快捷键

Posted by 机器人 on 23rd 六月 2009 in c/c++, linux/server, php/javascript, phpoo, vim

经常我们会编写一些测试代码,这些代码一般只是临时测试某一个函数,测试过后基本上就没什么用了。
如果使用IDE,这好办,基本上都有一些快速运行的键,比如在ZendStudio里,将代码编写好了以后,只需要按一下F5,就可以马上出来执行结果,而且这个文件都可以不用保存。

如果使用VIM来编写代码,可能很多朋友就会想了,有没有什么方法来建立一个快捷键,能快速的运行我们所编写的代码呢?!!
答案当然是肯定了的,不然也不会写这篇日志来讨论这个问题了。

在介绍方法之前,先来谈一下自己以前的执行方式吧!

先拿PHP来讲吧,最传统的方式就是将编写好的代码放在apache的根目录,然后通过浏览器来运行,或者使用php命令来运行php.可以使用php的r参数

hqlong@~$ php -r "echo 'hqlong';"

来快速测试,或者使用q参数

hqlong@~$ php -q test.php

来运行。

接下来讲怎么将vim支持一键执行。
大致原理是使用键盘映射,将快捷键映射到执行的命令。

在.vimrc中添加

nmap < F5 > < ESC >:!clear && php -q < C-R >%< cr >

即当我们按下F5时,就相当于执行了如下操作。
1.按下ESC,然后再按下:,进入vim命令行模式
2.执行clear清屏操作。
3.然后运行当前脚本。
4.最后执行回车操作.
下面有几个指令需要解释一下:
< C - R >%:得到当前文件的名字,包括路径.(按ctrl+r,然后再按%)

接下来可以测试一下.
vim /tmp/test.php

< ? php
    echo "hqlong";
?>

保存后,按F5,
就是快速的得出执行结果。

基于c/c++也同样可以做出映射来,比如我们用F6来执行C++代码。
那么就只需在.vimrc中添加

nmap < F6 > < ESC >:!clear && g++ < C-R >% -o test && ./test< cr >

这里如果我们测试如下代码。
vim test.cpp

# include < iostream >
using namespace std;
 
int main() {
     cout << "hqlong";
    return 0;
}

将会在当前上当下生成一个test可执行文件,并执行它。
所以的这一切都是由于nmap的强大映射功能。

希望对大家有所帮助,欢迎对不明白的地方进行讨论。
机器人 2009-06-23 22:59 于 北京 晴

vim函数跳转技巧

Posted by 机器人 on 8th 六月 2009 in vim

跳转到函数、变量定义处:
[+ctrl+i 跳转到函数、变量和#define
[+ctrl+d 跳转到#define处
ctrl+i 向前跳到前几次光标位置
ctrl+o 向后跳到后几次光标位置

函数体跳转:
[[
]]
[]
][
{}

2009-07-07 17:31 补充

如何选中括号中的内容 进行:
将光标移至括号内,按shift+v进入行选模式,然后

i{ - 选小括号中内容,不包括小括号
a{ - 选小括号中内容,包括小括号
ib - 选中括号中内容,不包括括号
ab - 选中括号中内容,包括括号
i{ - 选大括号中内容,不包括大括号
a{ - 选大括号中内容,包括大括号

:h text-objects

下面还有些相关的tips,未全部验证:
vi{ 选中{}中间的内容,不包括{}
va{ 选中{}中间内容,包括{}
vi( 选中()中间内容
vi< 选中<>中间内容
vi[ 选中[]中间内容
vit 选中中间的内容
vi” 选中”"中间内容
vi’ 选中”中间的内容
vis 选中一个句子
vib 选中一个block
viw选中一个单词
vip 选中一个段落

机器人 2009-06-08 14:06 于 北京 雨

vim几个小技巧(转)

Posted by 机器人 on 13th 五月 2009 in vim

在normal模式下光标停在某个字符上ga可以查看该字符的ascii码
#复制删除粘贴的操作:按V(shift+v),进入可视模式,jk上下选择需要的行,然后按
y 复制
d 删除
x 剪切
p 粘贴
可视模式很好用,例如想把两行的所有单词变成小写,按V然后按j或k选中这两行,按gu即可
#跳到行首按0,但实际更好用的是^, 跳到行首非空白字符
#折行前空出4字符显示折行标识
set foldcolumn=4
#折叠或展开(在折叠的那一行左右移动光标也可展开折叠)
za
#删除光标所在行所处的范围的折叠
zd
#当在:set foldmethod=marker后,折行会把{{{和}}}之间的内容折叠
#不在单词中间断行。 设置了这个选项后, 如果一行文字非常长, 无法在一行内显示完的话,
它会在单词与单词间的空白处断开, 尽量不会把一个单词分成两截放在两个不同的行里。
set lbr
#sw是shiftwidth的缩写,表缩进列数
fx把光标移动到该行的下个x字符上,这个x也可以是一个汉字,;重复fx操作。Fx把光标移动到该行的上一个x字符上。
gg光标定位到第一行开头,G定位到最后一行开头
H光标跳到当前窗口显示文本的第一行
M光标跳到当前窗口显示文本的中间一行
L光标跳到当前窗口显示文本的最后一行
g*查找包含当前单词的所有单词(*只查找与当前单词精确匹配的单词),
-d光标下跳半屏,文本上滚半屏
-u光标上跳半屏,文本下滚半屏
-e文本向上滚动一行
zz屏幕滚动使得当前行成为屏幕的中间一行
normal模式下按J删除此行末尾的换行符,从而合并两行
:e!重新读进上次保存的此文件内容
:ab myname william_djj
以后再编辑时键入myname,然后空格或回车myname串就会被william_djj代替
:r !date
在当前位置插入系统时间(linux下的date命令),同理当前位置插入某文件的内容就是
:r filename
:set ignorecase
查找时取消case sensitive
:set noignorecase
查找时case sensitive
############ 使用tags ###################
以下命令递归当前目录下的所有文件创建tags文件
ctags -R .
vim打开当前目录下的任意一文件,命令模式下键入下面语句以指定刚才创建的tags的位置,以后就可以在不同文件间查阅函数
set tags=..\tags
#分割窗口显示当前函数的定义
-w ]
##########################################
如果插件目录下有echofunc.vim,用以下命令生成tags,以后编辑代码函数名后打“(“时有参数提示。
$ ctags -R –fields=+lS .
:Tlist打开左边一个taglist的窗口,显示symbols。要注意的是在windows下如果tags文件路径中有空格或中文会报找不到tags文件的错误,
+w+w 或者+w+left/right 窗口切换
+] 进入光标所指的symbol的定义(如果用鼠标也是+鼠标左键,跟SI的用法一样)
+t 返回第一个用+t 跳转位置,注意+o是跳回上一个视图,而+t是跳回上一次按+]的位置
#以下命令分裂出一个窗口显示定义处
ptag 函数名
#以下命令关闭刚才打开的分裂窗口
pclose

#垂直分裂窗口打开一文件
vsplit 文件名

#水平分裂窗口打开一文件
split 文件名
变量名写成\name表示匹配模式
停在某个括号上按%,跳到匹配的括号处,#if跳到匹配的#else或#endif处
set fdm=syntax折叠函数体
双击]往后逐个函数跳读,双击[往前逐个函数跳读

#解决乱码
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

#在vim下对比两个文件,原来打开了fnpro.c,现在和fnpro.c.bak对比

#垂直分割
:vert diffsplit fnpro.c.bak

#水平分割
:diffsplit fnpro.c.bak

#跳到下一个不同之处
:]c

#跳到上一个不同之处
:[c

#展开折叠:zo

#折叠:zc

#不论何种情况下-o都可以上一次跳转的地方

#查看变量和函数的申明
[i

#以下为查看vim环境参数makeprg的值的例子:
:set makeprg?

#重新对文件代码进行缩进
gg=G

载自:http://blog.163.com/william_djj@126/blog/static/35166501200802015652314/
机器人 2009-05-13 10:47 于 北京