Archive for the ‘vim’ Category

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 2nd 九月 2009 in vim

syntax enable
set background=dark
set ts=4
set sw=4
set foldmethod=marker
set ai
set expandtab
set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom
set foldmethod=marker
set path+=/usr/include/c++/4.3.2
set path+=/home/hqlong/qeesoo/search_util/src
set hlsearch
“nmap :w:!clear && php -q %
“nmap :w:!clear && g++ % -o test && ./test
autocmd! BufNewFile,BufReadPost *.php nmap :w:!clear && php -q %
autocmd! BufNewFile,BufReadPost *.cpp nmap :w:!clear && g++ -g % -o /tmp/test && /tmp/test
autocmd! BufNewFile,BufReadPost *.c nmap :w:!clear && gcc -g % -o /tmp/test && /tmp/test
%retab

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 于 北京 雨