`
yNoooo
  • 浏览: 40978 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Windows环境下的GCC+VIM编程(zz)

阅读更多

用vim编写源代码,用gcc编译连结程序几乎已成为LINUX下程序设计的标准开发模式了,(当然emacs也是非常出色和流行的),本文教你如何在Windows下做到同样的事情。

gcc和vim都有支持不同平台的版本,win32也当然不例外。此外,配合不同的库像WINAPI、GTK+等可开发出GUI程序。

安装GCC

  gcc的官方主页(http://gcc.gnu.org)上好像有for win32的版本,但MinGW、CYGWin、Dev-C++、DJGPP等都集成了GCC win32版,以下以MinGW(Minimalist GNU For Windows)为例:到Sourceforge(http://sourceforge.net/project/showfiles.php? group_id=2435)下载一个MinGW-2.0.0-3.exe,然后安装,它包括了

  • GCC-3.2-core-20020817-1
  • binutils-2.13-20020903-1
  • mingw-runtime-2.2
  • w32api-2.0
  • gdb-5.1.1-1
  • make-3.79.1-20010722 (binary renamed as mingw32-make)

  最后把安装路径下的bin目录加至$PATH (和安装jdk时,调整path时一样的) (系统属性-->高级-->环境变量-->系统变量 中添加) 可以在命令行下打gcc -v来看看是否能正常运行。

安装VIM

  VIM针对Microsoft操作系统的版本很多,包括DOS16、Win32 DOS(9x)、Win32 Console(NT/2K/XP)、Win16 GUI、Win32 GUI等,真不愧是editor中的老大哥。

  官方网址: http://www.vim.org/ 或 vim.sourceforge.net (以VIM 6.1 for Win32 GUI(NT/2K/XP)为例。)

实战一下

  以一个经典得不能再经典的例子Hello World!来说明如何用vim和gcc来生成win32程序。(gcc的 命令和linux下是一样的。)


//hello.c
#include <stdio.h>
static void my_print (char *);
main ()
{
char my_string[] = "hello world!";
my_print (my_string);
}
void my_print (char *string)
{
printf ("The string is %s
", string);
}
</stdio.h>

用GCC编译连结运行:


c:>gcc -g -o hello hello.c
c:>hello
The string is hello world!


关于gvim的介绍
gVim(Vi IMproved) Vim是Linux上的著名的文本编辑器,他是早年的Vi编辑器的加强版。这个gVim是windows版的,并且有了标准的windows风格的图形界 面,所以叫g(graphical)Vim。这是一个国际版本,会根据安装的平台自动选择相应语言包,支持中文及其各种编码,连界面也是中文的,请放心使 用。这个极具Unix特色和风格(simple is the best)的编辑器相信会给您带来不同的感受。
分享到:
评论
3 楼 yNoooo 2007-10-20  
Editing with gVim
http://supportweb.cs.bham.ac.uk/docs/tutorials/docsystem/build/tutorials/gvim/gvim.html#gVim-Introduction

2 楼 yNoooo 2007-10-20  
和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括 UCS-2、UTF-8 等流行的 Unicode 编码方式。然而不幸的是,和很多来自 Linux 世界的软件一样,这需要你自己动手设置。

Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下:

    * encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在 .vimrc 中改变它的值才有意义。
    * fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
    * fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
    * termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。

好了,解释完了这一堆容易让新手犯糊涂的参数,我们来看看 Vim 的多字符编码方式支持是如何工作的。

   1. Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式。
   2. 读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到的,看起来是正确的 (注1) 字符编码方式。
   3. 对比 fileencoding 和 encoding 的值,若不同则调用 iconv 将文件内容转换为 encoding 所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。注意,完成这一步动作需要调用外部的 iconv.dll (注2),你需要保证这个文件存在于 $VIMRUNTIME 或者其他列在 PATH 环境变量中的目录里。
   4. 编辑完成后保存文件时,再次对比 fileencoding 和 encoding 的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为 fileencoding 所描述的字符编码方式,并保存到指定的文件中。同样,这需要调用 iconv.dll

由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8 编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议 encoding 的值设置为 utf-8。这么做的另一个理由是 encoding 设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 ;)。我们在中文 Windows 里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK 比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix 里表示 gb2312,在 Windows 里表示 cp936,也就是 GBK 的代码页)。

以下是我的 .vimrc 中关于字符编码方式设置的内容,这个设置比较有弹性,可以根据系统中的环境变量 $LANG (当然,Windows 中的写法是 %LANG%) 的值来自动设置合适的字符编码方式。此时,推荐设置 %LANG% = zh_CN.UTF-8,可以通过后面的 Windows 注册表脚本文件来方便的做到。

    " Multi-encoding setting, MUST BE IN THE BEGINNING OF .vimrc!
    "
    if has("multi_byte")
      " When 'fileencodings' starts with 'ucs-bom', don't do this manually
      "set bomb
      set fileencodings=ucs-bom,chinese,taiwan,japan,korea,utf-8,latin1
      " CJK environment detection and corresponding setting
      if v:lang =~ "^zh_CN"
        " Simplified Chinese, on Unix euc-cn, on MS-Windows cp936
        set encoding=chinese
        set termencoding=chinese
        if &fileencoding == ''
          set fileencoding=chinese
        endif
      elseif v:lang =~ "^zh_TW"
        " Traditional Chinese, on Unix euc-tw, on MS-Windows cp950
        set encoding=taiwan
        set termencoding=taiwan
        if &fileencoding == ''
          set fileencoding=taiwan
        endif
      elseif v:lang =~ "^ja_JP"
        " Japanese, on Unix euc-jp, on MS-Windows cp932
        set encoding=japan
        set termencoding=japan
        if &fileencoding == ''
          set fileencoding=japan
        endif
      elseif v:lang =~ "^ko"
        " Korean on Unix euc-kr, on MS-Windows cp949
        set encoding=korea
        set termencoding=korea
        if &fileencoding == ''
          set fileencoding=korea
        endif
      endif
       " Detect UTF-8 locale, and override CJK setting if needed
      if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
        set encoding=utf-8
      endif
    else
      echoerr 'Sorry, this version of (g)Vim was not compiled with "multi_byte"'
    endif

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\\Environment]
    "LANG"="zh_CN.UTF-8"

注1: 事实上,Vim 的探测准确度并不高,尤其是在 encoding 没有设置为 utf-8 时。因此强烈建议将 encoding 设置为 utf-8,虽然如果你想 Vim 显示中文菜单和提示消息的话这样会带来另一个小问题。参见另一篇 Win32 下 Vim 设置 enconding 为 utf-8 会在显示特定消息时崩溃。(此处提到的崩溃问题在 gVim 7.0 beta 时代就已经被解决了。)

注2: 在 GNU 的 FTP 上可以下载到 iconv 的 Win32 版,不推荐去 GnuWin32 下载 libiconv,因为那个版本旧一些,并且需要自己改名 dll 文件。
1 楼 yNoooo 2007-10-20  
gvim一直在用却不知道这个是怎么来的。
下面是关于gvim的配置
首先就是下载安装gvim

在安装目录下找到 _vimrc文件,打开再最末尾添加:

colorscheme darkblue     "设置深蓝色界面
set tabstop=4     "设置tab宽度为4个空格大小
set shiftwidth=4   "设置缩进4个空格

set encoding=utf-8 "设置编辑默认字体为utf-8

相关推荐

    linux下的C编程

    退出Vim,可以在命令模式下输入`:q`(不保存)、`:wq`(保存并退出)、`:ZZ`(相当于`:wq`)或`:q!`(放弃修改并退出)。 2. **Vim的光标移动**:在命令模式下,使用`h`、`j`、`k`、`l`键分别向左、下、上、右移动...

    Linux下的C编程

    在Linux环境中进行C编程,首先需要了解基本的开发工具,如文本编辑器`vi`或`vim`。`vi`(可视编辑器)是Linux系统中最常用的文本编辑器之一,它分为命令模式和输入模式。在命令模式下,用户可以通过键盘输入命令来...

    Linux编程环境 川大软件学院教学课件

    ### Linux编程环境——川大软件学院教学课件 #### 编辑器——VI **VI简介** VI(Visual Interface)是一种广泛应用于Unix和Linux系统的文本编辑器,它以其高效性和灵活性著称。VI并不具备现代编辑器所拥有的图形...

    Linux下编写c语言的技巧

    在Linux环境下学习和运用C语言是许多程序员的首选,尤其是在系统编程、嵌入式开发等领域。本文将深入探讨如何在Linux环境中高效地编写C语言代码,包括使用Vim编辑器、GCC编译器的基本操作以及一些高级用法。 #### ...

    YouCompleteMe+交叉编译工具链

    首先,`YouCompleteMe`是vim的一个强大补全插件,它提供了快速、全面的代码补全功能,支持多种编程语言。这个插件的核心特性包括: 1. **快速补全**:通过缓存源代码信息,提供近乎即时的补全速度。 2. **多语言...

    NOI2013笔试

    NOI2013采用Linux作为竞赛平台,体现了对参赛者在不同操作系统环境下编程能力的要求。 ##### 2. 文件操作命令 - **知识点**: 在Linux中更改文件名、返回上级目录、删除目录、执行文件等命令。 - **解析**: - 更改...

    linux基础命令

    **Vim**是一款非常强大的文本编辑器,在Linux环境下广泛使用。下面是一些基本的Vim命令: 1. **一般模式**: - `ctrl+f`:向下滚动一页。 - `ctrl+b`:向上滚动一页。 - `0`:移动到行首。 - `$`:移动到行尾。...

    西北工业大学-操作系统实验报告-实验三.doc

    操作系统实验报告-实验三 LINUX 的 C 语言编程 本实验报告的主要内容是学习在 FreeBSD 下使用 vi 编辑器编写 C 语言程序,使用 gcc 编译,并运行。下面是实验的详细内容和步骤: 一、实验目的 学习在 FreeBSD 下...

    NOI2019基础知识题库.pdf

    在编程方面,编译C程序的编译器是gcc,编译Pascal程序的编译器是fpc,编译C++程序的编译器是g++。 在程序调试方面,可以使用gdb程序进行调试。在文件系统方面,可以使用ls-l命令查看文件的大小,而文件系统的权限则...

    NOI2018笔试题库

    NOI竞赛中的编程语言可能包括C、C++和Pascal,对应的编译器分别是`gcc`、`g++`和`fpc`。 4. 程序调试是编写高质量程序的关键步骤。在Linux系统中,可以使用`gdb`来调试程序。同时,了解如何查看隐藏文件、如何查看...

Global site tag (gtag.js) - Google Analytics