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的引导盘做好了,如果以后还想添加引导项的话可以直接修改这两个文件。

使用UNetbootin制作Linux USB引导盘

首先要你的电脑主板支持usb引导才行。像我的是神舟天运F3000的小本好像有的问题,之前用U盘制作了一个Win PE的的引导盘,结果却不能引导,但是在同学的台式电脑却没问题。还好这次用UNetbootin制作的Linux引导盘可以用。

然后再来介绍一下UNetbootin(Universal Netboot Installer),它是一种跨平台工具软件(支援Windows和Linux),可以用来建立Live USB 系统,也可以加载各种系统工具,或安装各种Linux操作系统(Linux套件)和其他操作系统,不需使用安装光碟(自动透过网络下载)。支援主流Linux(Linux套件),包含但不只限于,Ubuntu、Fedora、 openSUSE、CentOS、Debian、Linux Mint、Arch Linux、Mandriva、Puppy Linux、Slackware和FreeDOS,FreeBSD以及NetBSD。

最后再来说说制作过程,先运行UNetbootin(Linux下需root权限运行),如果没有Linux的镜像文件就选第一个“Distribution”再选择你想要安装的版本,然后它就会自动下载安装;如果有镜像文件就选第二个“Disk Image”再选择你的镜像文件,最后在下面的“Type”及“Drive”选择你要安装到哪个分区,点“OK”开始安装。

如图:





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

Linux下搭建简单ftp服务器

在Windows下可以使用Serv-U快速、简单的搭建一个ftp服务器,同样在Linux下也可以。Linux下优秀的ftp服务器软件有vsftpd、wu-ftpd等。这里我们用的vsftpd。

1、下载安装

下载地址:http://vsftpd.beasts.org/

也可以直接使用如下命令进行安装:
sudo apt-get install vsftpdsudo yum install vsftpd

2、配置

vsftpd 主要文件清单
/etc/sbin/vsftpd:服务文件。
配置文件:ubuntu为 /etc/vsftpd.conf。fedora为 /etc/vsftpd/vsftpd.conf
不能用于ftp登录的用户:ubuntu为 /etc/ftpusers。fedora为 /etc/vsftpd/ftpusers
/var/ftp:默认的匿名用户(anonymous或ftp,无密码)登录的目录。

vsftpd.conf文件配置:
anonymous_enable=YES #允许匿名用户访问
local_enable=YES #允许本地用户访问
write_enable=YES #具有写权限

允许匿名用户具有写权限(上传/创建目录),在默认配置下添加以下内容,另外还需对ftp目录具有权限:
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO

更改用户主目录,诺不设置,则匿名用户及ftp用户的主目录为/var/ftp,其余用户的主目录为其Linux的系统主目录。

anon_root=/media/home/ftpserv #匿名用户主目录
local_root=/media/home/ftpserv #本地用户主目录

设置欢迎信息

dirmessage_enable=YES
message_file=.welcome #欢迎信息的文件,不设置缺省为.welcome。
设置好后在每个ftp用户的主目录下新建一个文件,取名为.welcome,然后在里面输入你想显示的欢迎信息。

3、启动、停止、重启

启动:sudo /etc/init.d/vsftpd startsudo service vsftpd start
停止:sudo /etc/init.d/vsftpd stopsudo service vsftpd stop
重启:sudo /etc/init.d/vsftpd restart sudo service vsftpd restart

至此一个简单的ftp平台搭建好了,如果你需要更多的功能请查看vsftpd的帮助文档。

瑞银无线网卡Linux驱动

我的是瑞银UR54g(R01) V1.1的usb无线网卡,以前在Ubuntu 9.04及其更高版本中都是即插即用的,然而现在换成了Fedora 13之后就不能识别了,很是郁闷。

还好有款软件可以让Linux直接使用Windows的无线网卡驱动,这个就是ndiswrapper(下载地址: https://sourceforge.net/projects/ndiswrapper/files/ )。

将源代码下载后解压,然后进入解压目录打开INSTALL文件查看安装帮助。

1、安装ndiswrapper

进入解压目录后执行命令:

$ make uninstall
$ make
# make install

2、安装Windows驱动

(瑞银3321驱动下载: http://u.115.com/file/f56c19bf72
进入驱动文件所在目录执行命令:

# ndiswrapper -i WlanUIG.inf //安装驱动
# ndiswrapper -m  //写入配置信息
# ndiswrapper -l //查看已安装的驱动

3、加载网卡驱动

# modprobe ndiswrapper

这里如果出错,FATAL: Module ndiswrapper not found.请检查文件 ndiswrapper.ko 是不是在你相对应的内核版本的文件夹中。执行命令查看:

#ls /lib/modules/uname -r/kernel/drivers/net/ndiswrapper

如果没有请把它从ndiswrapper解压后的文件夹中拷贝过去,然后执行以下命令:

# depmod -a
# modprobe ndiswrapper

好了,搞定,无线网卡上的灯已经亮了。

顺便说下本本自带的无线网卡系统看作wlan0,外置的无线网卡系统看作wlan1。如果你的无线网卡灯已经亮了,但是用Wicd搜索不到无线信号的话,请把Wicd设置中的Wireless interface改为wlan1试试看。

Linux文本界面中文处理

我们有时候在Linux文本模式下需要输入中文,但是在文本模式下又不能切换输入法。还好有软件可以帮我们在文本模式下显示和输入中文。

常见的控制台的汉化软件有:cce2k、unicon、zhcon,等等。

由于unicon、和cce2k( http://cce2k.sourceforge.net/ )我没有使用过,因此在这我就不做介绍了,下面来说说zhcon。

1、安装
可以直接执行命令yum install zhcon进行安装。若源里没有该软件包,zhcon的源代码和RPM包可以从 http://zhcon.sourceforge.net/ 下载得到。

2、使用

    Usage: zhcon [OPTIONS]… [FILES]…

    -h, –help Print help and exit
    -V, –version Print version and exit
    –utf8 use iconv filter to convert UTF-8 stream from/to system
    encoding (default=off)
    –drv=STRING specify video driver (auto, fb, ggi, vga) (default=`auto’)

进入控制台后执行命令zhcon即运行该软件。若中文还是显示乱码,可能是因为zhcon默认编码为GB2312,而Linux为UTF-8。这时需要添加–utf8这个参数。
即执行命令:zhcon –utf8

下面附上zhcon的一些快捷键:
CTRL+SPACE:打开/关闭输入法
ALT+SPACE:打开/关闭CJK方式
CTRL+F1:使用中文GB2312编码
CTRL+F2:使用中文GBK编码
CTRL+F3:使用中文BIG5编码
CTRL+F4:使用日文JIS编码
CTRL+F5:使用韩文KSCM编码
CTRL+F7:切换输入风格
CTRL+F9:切换到自动识别编码方式
CTRL+F10:系统菜单
CTRL+ALT+H:帮助窗口
CTRL+ALT+0:进入提示状态
CTRL+ALT+1 ~ CTRL+ALT+9:选择输入法
SHIFT+PAGEUP:上卷半屏历史信息
SHIFT+PAGEDOWN:下卷半屏历史信息

飞信 for linux

飞信: 飞信是中国移动推出的“综合通信服务“即时聊天工具,可以免费从PC给发手机短信,而且不受任何限制,实现互联网和移动网间的无缝通信服务。

移动推出的PC版的飞信只有Windows版本的,我们这些Linux用户就没办法了(好像最近移动又推出了Web版飞信,只要有浏览器就能用),不过还好有人开发了第三方飞信应用程序支持Linux。下面就为大家介绍两款。

1、LibFetion
LibFetion是由邓东东牵头开发的第三方飞信应用程序。支持PC和手持设备,其中PC版支持Windows、Linux、苹果。

下载地址:http://web.libfetion.org/demoapp_download.php

2、OpenFetion
Openfetion是基于GTK+2.0的开源飞信。

openfetion需要依赖如下几个库开发:

libgtk2.0-dev(提供UI支持),
libssl-dev(提供加密安全支持),
libxml2-dev(提供xml创建解析支持),
libnotify-dev(提供gnome notification消息提示支持,可选),
libgstreamer0.10-dev(提供声音提示功能支持,可选)
intltool(提供国际化的支持)

如果您的系统中没有安装这些库,您需要自行安装。

下载地址:

sourceforge:https://sourceforge.net/projects/ofetion/

google code:http://code.google.com/p/ofetion/

VirtualBox和VMware镜像文件互转方法详解

VirtualBox和VMware都是功能强大的虚拟机软件,各有其优点,也各有缺点。有时实在是让人难以取舍,不知道该用那个好。下面说说这两个软件分别生成的不同格式的硬盘文件相互转换的方法。

VMWare转VirtualBox

方法一:
使用VBoxManage命令

Usage:
VBoxManage clonehd <uuid>|<filename> <outputfile>
[–format VDI|VMDK|VHD|RAW|<other>]
[–variant Standard,Fixed,Split2G,Stream,ESX]
[–type normal|writethrough|immutable|shareable]
[–remember] [–existing]

例如:
VBoxManage clonehd ‘vmdk文件名’ ‘vdi文件名’ –format VDI

命令执行过程中如出现如下错误:
ERROR: Cannot register the hard disk ‘/stor/virtualbox/sv1/sv1-disk1.vdi’ with UUID {4e7a0d53-2775-438d-b383-79e69c5cf7f4} because a hard disk ‘/stor/virtualbox/sv1/sv1-disk1.vdi’ with UUID {4e7a0d53-2775-438d-b383-79e69c5cf7f4} already exists in the media registry (‘/home/chao/.VirtualBox/VirtualBox.xml’)
Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: “OpenHardDisk(Bstr(szFilenameAbs), AccessMode_ReadWrite, false, Bstr(“”), false, Bstr(“”), srcDisk.asOutParam())” at line 628 of file VBoxManageDisk.cpp

则需要先将硬盘镜像从虚拟介质管理器中将镜像释放 并删除,然后再执行命令。

最新版本的VirtualBox是可以直接使用VMDK的。

方法二:
使用Qemu软件,下载地址:http://www.davereyn.co.uk/download.htm(只能在Windows下用)
先用Qemu转VMDK为RAW格式,再转RAW为VDI格式。详情请自己看软件说明。

VirtualBox转VMWare

因為VirtualBox的转换方式有问题的关系,所以我們得通过两次转化的方法来进行…

第一次就是先把vdi轉成vmdk

VBoxManage clonehd ‘vdi文件名’ ‘vmdk文件名’ –format VMDK

經過漫長的等候
這裡轉換好之後….
再來就是第二次的轉換啦…

vmware-vdiskmanager -r ‘原vmdk文件’ -t X ‘转换后的vmdk文件’

其中的X可以用
0 : 做成單一檔案(不預先配置)
1 : 切成2GB為一個檔案
2 : 預先配置檔案大小
3 : 預先配置以2GB為單位的檔案群
4 : 預先配置成ESX的格式
來代替

這裡我用的是”1″

Fedora SIS显卡分辨率设置

我的小本是神舟的天运F3000,SIS的芯片组。驱动比较难找。安装完Fedora 13后默认为800600的分辨率,且只有800600、640480两种,由于没装显卡驱动(我想装也找不到)所以不能更改为我们喜欢的1024768以上的分辨率。

曾经有人说过,选择了神舟你就选择了草根。既然如此就不要抱怨了自己想办法解决吧。

在网上有人说可以通过修改/etc/X11/xorg.conf这个文件来修改分辨率,可是我这连这个文件也没有。最后我使用的如下方法:

(1)首先以root权限执行命令:Xorg -configure :1 ,执行完后就在/root目录下生成了xorg.conf.new文件;然后将其复制到/etc/X11目录下:cp /root/xorg.conf.new /etc/X11/xorg.conf

(2)在开机时Fedora的grub引导后加上vga=792这个参数。这时你的分辨率又回到1024x768,16位色深。

你可以从下面的表格中查找你喜欢的分辨率:

Colours 640x480 800x600 1024x768 1280x1024 1600x1200
--------+---------------------------------------------
256      | 769      771      773      775       796
32,768 | 784        787      790      793       797
65,536 | 785        788      791      794       798
16.8M | 786         789      792      795       799