VIM实现C与GTK同时代码高亮

vim是一款优秀的编辑器,支持多种语言的高亮。不过在编程时支持C高亮就不能支持GTK高亮,支持GTK高亮就不能支持C高亮,这个很是郁闷,难道就不能同时支持两种语言吗。通过试验发现可以修改VIM的配置实现多种语言同时高亮。

首先你要有关键字高亮的配置文件,C的VIM应该自带有,GTK的如果没有可以到这里下载。gtk-vim-syntax.7z:http://v4.u.115.com/file/f5123a8395

下载解压后,进入解压目录,其中gtk.vim就是GTK的关键字高亮文件,不过如果直接使用这个的话GTK高亮了,但是C又不高亮。偶用的方法是将c.vim的内容复制到gtk.vim中去,然后保存为一个文件,就是压缩包中的gtk+.vim这个文件,然后将其复制到/usr/share/vim/vim72/syntax目录下。

然后再在gvim菜单中添加一个GTK高亮选项,方法是修改/usr/share/vim/vim72目录下的synmenu.vim文件,添加一行“an 50.40.440 &Syntax.FG.GTK+ :cal SetSyn(“gtk+”)<CR>”,偶是添加在“an 50.40.430 &Syntax.FG.GTKrc :cal SetSyn(“gtkrc”)<CR>”(210行处,不同人可能不同)这一行的下方。

现在就可以同时实现C与GTK关键字高亮了,如图:

gtk-vim-syntax

Vim-syntax-menu

这样虽然实现了C与GTK同时高亮,但是还是有些关键字不行,如gdk、glib等。虽然压缩包内包含有这些的文件,但是如果全都合成一个文件的话,那样会显得比较臃肿,所以就先将就了。

推荐两款WordPress高亮代码插件

1、wp-syntax


适合使用:WordPress 2.0 or higher
下载链接:http://wordpress.org/extend/plugins/wp-syntax/

使用方法:在后台启用wp-syntax后,在文章中插入如下代码实现代码高亮:
<pre lang=”LANGUAGE” line=”1″> 要显示的代码<pre>
相关参数说明:
lang=“LANGUAGE”,在language处填写你要运行的代码语言,如css、php等;
显示的代码,就是你要高亮显示的代码;
line=”1″,line表示显示行号,不写则不显示。1表示代码从第一行开始显示。

2、SyntaxHighlighter


适合使用:WordPress 2.8 or higher
下载链接:http://wordpress.org/extend/plugins/syntaxhighlighter/

使用方法:启用插件后,在文章插入如下代码实现高亮:
[code lang=”language”] 需要显示的代码[/code]

据说wp-syntax支持的语言比较多,不过对于一般人来说这两个插件所支持的语言都够用了。

FCKeditor——可视化HTML编辑器

FCKeditor简介

以前一直苦恼Linux下没有合适的HTML编辑器,但是现在找到一款软件比较不错。FCKeditor 相容于绝大部分的网页浏览器,像是 : Internet Explorer 5.5+ (Windows)、Mozilla Firefox 1.0+、Mozilla 1.3+ 、Netscape 7+以及Opera浏览器。也就是说只要你的浏览器支持,无论是在什么系统下都能用。

FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器。它志于轻量化,不需要太复杂的安装步骤即可使用。它可和PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java、以及ABAP等不同的编程语言相结合。“FCKeditor”名称中的“FCK” 是这个编辑器的作者的名字Frederico Caldeira Knabben的缩写。

下载安装

下载地址:http://ckeditor.com/download 现在最新版本是CKEditor 3.4.1。
解压后直接用浏览器打开 ckeditor/_samples/index.html 即可。

网站终于恢复正常了

前两天突然发现偶的博客(www.xefan.cn)无法访问,但是空间的FTP可以连接上,数据库也没问题。因此只有一种可能了,空间的IP被墙了。

又要开始痛苦的搬家过程了,这是偶第N次搬家了…………5555555~~~~~

这两天尝试了很多网友推荐的空间,但是这些空间不是访问不了就是限制太多,都不尽人意。最后还是选择72pines。尽管72pines有广告,尽管有限制,但是相对于寻找免费空间的漫长过程来说这些还是可以接受的。

目前就暂且在这定居了,希望以后别再出问题了。

在Windows下安装GTK

GTK 简介

GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。它遵循 LGPL许可证,所以可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何费用来购买许可证和使用权。当前,GTK 已经被成功地应用到 了大量的自由软件及商业软件中,已经取得了很大的成功。
GTK是跨平台的,它能够运行于Linux/Unix/Windows/MacOS及嵌入式系统

下面就来介绍一下在Windows一搭建GTK开发环境。
首先需要先安装C/C++开发环境,GTK支持Cygwin、MSYS、Dec-Cpp、MSVC这几种。这里偶用的是Dev-Cpp。在前一篇文章《在Windows下安装gcc》( http://www.xefan.com/archives/83446.html )介绍了Dev-Cpp的安装。

下载、安装GTK

下载地址:http://gladewin32.sourceforge.net/

由于我们是用于开发,所以就选择下载Gtk+ 2.12.9 Development Environment Revision 2这个。下载完后安装gtk-dev-2.12.9-win32-2.exe,安装过程全部按照默然的就可以了,留意一下的是选择IDE的时候确定一下是Dev-Cpp就可以了。安装完毕后系统环境变量和Dev-Cpp的目录设置应该都已经设置好了。
1、查看系统环境变量:右键单击“我的电脑”–>“属性”–>“高级”–>“环境变量”–>“系统变量”,可以看到Path增加了“%GTK_BASEPATH%bin”。

2、查看Dev-Cpp的目录设置:“工具”–>“编译器选项”–>“目录”,选择“库”可以看到“C:GTKbin”;选择“C包含文件”可以看到“C:GTKINCLUDE”……

接下来我们进行测试一下,打开 Dev-C++,建立一个新的工程,添加一个新文件:

#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Hello World");
gtk_widget_show(window);
gtk_main();
return 0 ;
}

这个时候还不能编译,需要修改工程属性,在”工程->工程属性->参数” 或 “工具->编译选项”中的链接器框里面填入:

    -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv

在编译选项里面填入:

    -mms-bitfields

就可以编译通过了。

在运行以后,你会发现出现一个空白窗口,标题为 Hello World。

在Windows下安装gcc

GCC简介

GCC是GNU公社的一个项目。是一个用于编程开发的自由编译器。最初,GCC只是一个C语言编译器,他是GNU C Compiler 的英文缩写。随着众多自由开发者的加入和GCC自身的发展,如今的GCC以经是一个包含众多语言的编译器了。其中包括 C,C++,Ada,Object C和Java等。所以,GCC也由原来的GNU C Compiler变为GNU Compiler Collection。也就是 GNU编译器家族 的意思。当然,如今的GCC借助于他的特性,具有了交叉编译器的功能,即在一个平台下编译另一个平台的代码。

GCC是一个原本用于Unix系统下编程的编译器。不过,现在GCC也有了许多Win32下的移植版本。

GCC for Windows

Windows下的gcc有MinGW、Cygwin、Dev C++等等。这几个版本都很不错,不过我还是比较喜欢Dev C++。

MinGW( http://www.mingw.org )和Cygwin( http://www.cygwin.com )在安装过程中需要联网下载所需的文件,而服务器基本上都是在国外,所以这个过程非常的慢。曾经有一次安装Cygwin花了偶一个多小时的时间…………

这就是偶为什么选择Dev C++的原因。

Dev C++( https://sourceforge.net/projects/dev-cpp/ )使用MingW32/GCC编译器,遵循C/C++标准。开发环境包括多页面窗口、工程编辑器以及调试器等。

devcpp-4.9.9.2_setup.exe下载:

http://sourceforge.net/projects/dev-cpp/files/Binaries/Dev-C%2B%2B%204.9.9.2/devcpp-4.9.9.2_setup.exe/download

Dev C++如图:

Linux下文件、文件名编码转换

在Windows下文本文件默认保存为ansi的编码,而在Linux下是utf8的编码,所以Linux与Windows共享文件时常常出现乱码。这时就需要转换编码了。

转换文件编码
直接用文本编辑器(如gedit)打开文本文件,再另存为时选择编码类型然后保存。

转换文件名编码
偶用vsftpd搭建了一个ftp服务器,结果在Windows下访问时文件名有中文的会出现乱码。只要把文件名的编码转换一下就可以了,可以使用convmv软件来完成。

把文件名由utf8改为gbk:convmv -f utf8 -t gbk * –notest

把文件名由gbk改为utf8:convmv -f gbk -t utf8 * –notest

vim编译源文件

最近开始学习使用vim,它是Linux下的一个功用非常强大的编辑器。另外emacs也是一款很不错的编辑器,不过偶用了几天不太顺手于是就改用vim。在vim的官网还提供了丰富的插件可以对其进行扩展。网上也有文章介绍使用插件将vim打造成ide,不过偶觉得这个没有必要,因为Linux下也有一些很好的ide,如netbeans、eclipse等,再说了高手们往往都是使用记事本的。

好了,开始切入正题。先打开vimrc文件(在/usr/share/vim目录下),然后添加以下内容:

“单个文件编译—————————————————
map <F5> :call Do_OneFileMake()<CR>
function Do_OneFileMake()
“判断文件名是否为空
let sourcefileename=expand(“%:t”)
if (sourcefileename==””)
echohl WarningMsg | echo “Fail to make! Please select the right file!” | echohl None
return
endif

if &filetype==”c”
setlocal makeprg=gcc -o ‘%<’ ‘%’
endif
if &filetype==”cpp”
setlocal makeprg=g++ -o ‘%<’ ‘%’
endif
if &filetype==”python”
setlocal makeprg=python -u
silent make %
copen
return
endif
“编译
make
“运行
let outfilename=expand(“%<”)
execute “!./“.outfilename
endfunction

好了,现在用vim打开源文件然后按F5键即可实现编译、运行了,这个只支持C/C++和python,如果你想要支持更多的话可以参照这个自己进行修改。

最后顺便附上一些对编程比较有帮助的vim插件:

taglist

相信无人不知其大名,用来提供单个源代码文件的函数列表之类的功能。

omnicppcomplete

提供C++代码的自动补全功能

a.vim

提供快速切换.h和.cpp文件的功能

NERD_commenter

提供快速注释/反注释代码块的功能

snipMate

提供快速生成代码段的功能

matchit

使%不仅能够匹配简单的<>(),还能匹配<html></html>之类标签的功能

mark.vim

给不同的单词高亮,表明不同的变量时很有用。(特别说明一下,vim.org上有两个Mark.vim,请使用链接中指向的那个,另外一个是有bug的)

jsbeautify.vim

优化js代码,并不是简单的缩进,而是整个优化

pyflakes

提供实时检查python代码语法的功能(强烈推荐!)

xml.vim

提供快速编写xml/html的能力,如标签自动闭合等

制作Linux+DOS+WinPE USB引导盘

在我的前一篇文章《使用UNetbootin制作Linux USB引导盘》( http://www.xefan.com/archives/83431.html )介绍了使用UNetbootin轻松制作Linux的USB引导盘,不过如果我想换一个版本的Linux的话需要先将原来的文件删除再重新制作,这样感觉比较麻烦。于是就思考能不能同时引导多个Linux呢,通过试验发现可以通过修改syslinux.cfg这个文件来实现。

syslinux.cfg与grub的menu.lst类似,不过又有点不同。反正我是菜鸟也不懂,只要能用就行。有两个方法可以实现引导,一个是使用memdisk,另一个是使用grub。

一、memdisk
1、添加其它Linux引导项
以Ubuntu10.04为例,先将镜像文件中casper目录下的vmlinuz和initrd.lz文件提取出来跟镜像文件一起放在U盘的ubuntu10.04文件夹下。然后在syslinux.cfg中添加一个引导项:

    label Ubuntu 10.04
    menu Ubuntu 10.04
    kernel /ubuntu10.04/vmlinuz boot=casper iso-scan/filename=/ubuntu/ubuntu-10.04-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
    append initrd=/ubuntu10.04/initrd.lz

2、添加DOS、PE引导项
先将dos.img及memdisk放在dos文件夹下,然后在syslinux.cfg中添加一个引导项:

    label DOS1.0
    menu DOS1.0
    kernel /dos/memdisk
    initrd /dos/dos.img

dos.img下载地址:http://u.115.com/file/f5a0def2a8

memdisk下载地址:http://u.115.com/file/f5f4cb0aa1

PE跟这个类似,只是我在网上只找到WinPE.iso,找不到WinPE.img,故我用的是另一个方法来引导。
如果镜像文件不是标准的1.44/2.88MB,或者大小超过2880kb,就需要指定磁盘镜像的C/H/S参数(即磁道数/磁头数/每磁道扇区数)。这时我们可以用“grub菜单编辑器”来获取软盘的C/H/S参数。
下载地址:http://u.115.com/file/f5510e6f36

运行grub菜单编辑器,单击界面左边的“获取软盘镜像的C/H/S参数”,选中映像文件,即可看到它的数据。那么它的格式为:
kernel (hdx,y)/boot/grub/memdisk.gz c=磁道数 h=磁头数 s=每磁道扇区数 floppy
initrd (hdx,y)/目录/文件名

二、grub
先将grub.exe和menu.lst文件放在grub文件夹下,然后在syslinux.cfg中添加一个引导项:

    label Grub
    menu Grub
    kernel /grub/grub.exe
    append –config-file=”configfile /grub/menu.lst”

再将WinPE.ISO文件放在PE文件夹下,然后修改menu.lst文件,添加以下内容:

    title WinPE.ISOfallback 1

    find –set-root /PE/WinPE.ISO

    map /PE/WinPE.ISO (0xff) || map –mem /PE/WinPE.ISO (0xff)

    map –hook

    chainloader (0xff)

    savedefault –wait=2

WinPE下载地址:http://u.115.com/file/f59f3e483b

grub4dos下载地址:http://u.115.com/file/f52b6269a6

dos及ubuntu10.04也可以通过修改menu.lst来实验引导。

至此,Linux+DOS+PE的引导盘做好了,如果以后还想添加引导项的话可以直接修改这两个文件。