标签归档:vim

移植qt-embedded-linux-opensource4.5.3到QQ2440

这一篇文章我们将主要介绍虚拟机下建立embedded-X86的版本以及移植到QQ2440开发板的embedded-arm版本的QT4。

一、工作环境

虚拟机版本:VM6.0

操作系统:Fedora 9

编译工具:gcc 3.4. 和arm-linux-gcc 3.4.1

文件系统:自己制作的文件系统,有基本的busybox工具和arm-linux-gcc 3.4.1的库,脚本基本缺省配置,最简单那种,仅仅能启动基本服务。注意:不是用友善光盘的文件系统。上一篇文章我们已经介绍了如何去建立yaffs文件系统

移植的linux:系统是我自己直接从linux 2.6.32.2配置的,按照以前的博文移植好linux内核,由于没友善的完善,可能缺了点驱动,所以假如是你也是自己配置的内核,www.linuxidc.com请确保你的AD驱动跟触屏的驱动移植好,要不然,是无法进行触屏操作的。

压缩包:

1. qt-embedded-linux-opensource-src-4.5.3.tar.gz

2. qt-x11-linux-opensource-src-4.5.3.tar.gz

3. tslib-1.4.tar.gz

二、背景知识

  Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt/X11。

  Qt/E(Qt/Embedded)是用于嵌入式Linux系统的Qt版本。Qt/E去掉了X Lib的依赖而直接工作于Frame Buffer上,因而效率更高,但它并不是Qt的子集,而应该是超集,部分机制(如QCOP等)不能用于Qt/X11中。

  Qtopia是一个构建于Qt/E之上的类似桌面系统的应用环境。相比之下,Qt/E是基础类库。

  Qtopia Core:就是原来的Qt/E,大概从Qt 4开始改名,把Qtopia Core并到Qtopia的产品线中去了。但实际上Qtopia Core就相当于原来的Qt/E,仍然作为基础类库。

  另外,似乎奇趣最近又把Qtopia Core改名叫做Qt for Embedded Linux了,不知道是不是因为Qtopia Core搞得大家都很糊涂,没人来买的缘故。

  qt-x11-linux-opensource-src-4.5.3.tar.gz 这个安装包主要应用在linux下,安装完成后,会得到类似arm-linux-gcc和gcc这样的东西,可以编译相应的程序,安装这个包,有两个目的:

  1、方便以后在Linux环境下编译调试好后,移植到开发板上

  2、提供qmake、designer、qvfb等工具去让我们编译QT程序

  qt-embedded-linux-opensource-src-4.5.3.tar.gz,主要是为了获得在ARM下,运行QT程序的库文件,当然它也能提供像qmake、designer、qvfb工具,不过由于我们在安装了qt-x11-linux-opensource-src-4.5.3.tar.gz的前提下,也就不需要重新安装了,所以这个安装包,我们可以根据实际情况缺省安装。

  tslib-1.4.tar.gz,这个是驱动触屏的程序,只有正确安装这个程序,我们才能够操作开板的触屏

三、安装tslib-1.4

  这是个触摸屏的库文件,把tslib-1.4.tar.gz放到/home目录下

  #tar xvzf tslib-1.4.tar.gz

  #cd tslib

  #./autogen.sh

  #./configure –profix=/home/mytslib/ –host=arm-linux ac_cv_func_malloc_0_nonnull=yes

  #make

  #make install

  这样以后可以看到/home/mytslib/下有了库文件,移植时会用到!先不详细说明。

四、安装qt-x11-linux-opensource-src-4.5.3.tar.gz

  谨记,在安装这个包的时候,只要确保你的硬盘空间至少有6G以上,一般不会出错。

  把qt-x11-linux-opensource-src-4.5.3.tar.gz放到/opt目录下

  #tar xvzf qt-x11-linux-opensource-src-4.5.3.tar.gz

  #cd qt-x11-linux-opensource-src-4.5.3

  #./configure

  #gmake      //过程很长,由于我的机子配置差,基本是前一天晚上到第二天….

  #gmake install

然后

[root@localhost qt-x11-opensource-src-4.5.3]# cd tools/qvfb

[root@localhost qvfb]# make

[root@localhost qvfb]# make install

下面我们使用到这一步完成的qvfb。

五、安装qt-embedded-linux-opensource-src-4.5.3-x86

首先解压qt-embedded-linux-opensource-src-4.5.3-tar.gz然后将其命名为qt-embedded-linux-opensource-src-4.5.3-x86然后编译x86的版本。

[root@localhost qt4] # cd qt-embedded-linux-opensource-src-4.5.3-x86

[root@localhost qt-embedded-linux-opensource-src-4.5.3-x86] # ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.3-x86 -embedded x86 -qvfb

选择o确定开源版本,选择yes接受版权;

[root@localhost qt-embedded-linux-opensource-src-4.5.3-x86]# make

[root@localhost qt-embedded-linux-opensource-src-4.5.3-x86]# make install

安装完成以后进行如下一步操作:

[root@localhost qt4] # cp qt-x11-opensource-src-4.5.3/bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.3-x86/bin

然后配置x86的编译环境

#vim setenv-x86.sh

这时会跳出来一个编辑文本,在里面输入:

  PATH=/usr/local/Trolltech/Qt-4.5.3/bin:$PATH

  QTDIR=/usr/local/Trolltech/QT-4.5.3

  MAINPATH=$QTDIR/man:$MAINPATH

  LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

  export PATH QTDIR MA

Linux下C++ IDE开发工具

<

div id=”content” contentScore=”1069″>1,Qt Creator这款IDE很有特点

2,,,其实用eclipse Makefile也不错的, 可以用gdb调试,

IDE的作用无非编辑代码,管理工程, 或者调试功能,Eclipse管理代码工程的能力还是很赞的。

3,Linux下智能感知首推NetBeans C++模块,模板什么的都能解析的出来,甚至boost::graph这样的都能解析。相比Eclipse的智能感知很差。Kdevelop4的智能感知其实比Netbeans的强,但是速度很慢,不像NB短时间内解析不出来的就不解析了,Kdevelop是完全解析,一旦用到Boost基本没戏,而且Kdevelop本身还不稳定。CodeBlocks的智能感知最近数年内都没人插手做了。

总结:

Qt Creator的感觉和Eclipse差不多,可能更弱一点。而且IDE功能本身非常弱,没有什么使用的兴趣。

VIM根本没有智能感知,都是从tags里面推测的。不过我用VIM的时候都是用熟悉的库,不用漯div>

Linux下的C语言开发要学习什么内容

  一、工具的使用
  1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。   2、学会makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成makefile文件。

  3、掌握gcc和gdb的基本用法。掌握gcc的用法对于构建一个软件包很有益处,当软件包包含的文件比较多的时候,你还能用gcc把它手动编译出来,你就会对软件包中各个文件间的依赖关系有一个清晰的了解。

  4、掌握svn/cvs的基本用法。这是linux,也是开源社区最常用的版本管理系统。可以去试着参加sourceforge上的一些开源项目。

  二、linux/unix系统调用与标准C库
  系统调用应用

Linux下vlc编绎过程记录

这几天,刚好有时间(闲得蛋疼),于是想要去看看vlc的源码。出于本能的原因,下载了源码后,第一件想要做的事就是尝试着编绎此源码。网络上相关编绎资料也多, 但多数没法满足我的要求, 很多资料更多是作者随手记录的笔记,作者编绎的vlc版本与现在所下载的最新版本也有了一定的偏差。

编绎环境

linux版本:Fedora 9

编绎器:gcc 4.3.0

vlc源码版本:vlc-1.1.7 (已是此时的最新的版本)

qt4源码库:qt-everywhere-opensource-src-4.7.1.tar.gz

vlc 的源码在编绎中依赖的其它开源库过多, 所以首先我决定编绎出一个最小的能成功能运行的vlc实例出来。

1 编绎qt4  vlc 的ui界面依赖qt4作为界面库。

从http://qt.nokia.com/downloads/linux-x11-cpp 下载最新的qt开发包

qt-everywhere-opensource-src-4.7.1.tar.gz

解压文件后,编绎安装。

#tar zxvf qt-everywhere-opensource-src-4.7.1.tar.gz

#cd qt-everywhere-opensource-src-4.7.1

指定编绎选项

#./configure –prefix=/home/extern/install/qt4 -fast -no-largefile -no-sse3

/home/extern/install/qt4 为指定的编绎完成后的生成的qt4库,头文件 ,demo程序等安装目录。

#./gmake

#./gmake install

此时Ok后,会发现/home/extern/install/qt4目录下会生成bin lib include demos doc examples imports等目录

进入lib目录下会可能看到有pkgconfig这样的一个目录,pkgconfig目录的路径应该是home/extern/install/qt4/lib/pkgconfig

接下来编绎vlc 会使用该路径。

2

进入vlc目录

#cd vlc-1.17

建立一个脚本文件,用于配置编绎选项。

#vim build_simple_vlc.sh

此时为什么会建立一个脚本呢?主要是为了方便,每次为了修改configure配置,都得重新输入一长串命令, 这个还蛮麻烦的。有了该脚本后,以后改起配置,也省心省力多了。

view plaincopy to clipboardprint?
#!/bin/bash  
export PKG_CONFIG_PATH=”/home/extend/install/qt4/lib/pkgconfig” 
./configure –enable-run-as-root –prefix=/home/extend/install/vlc-simple –disable-avcodec –disable-postproc –disable-a52 –disable-fribidi  
#!/bin/bash
export PKG_CONFIG_PATH=”/home/extend/install/qt4/lib/pkgconfig”
./configure –enable-run-as-root –prefix=/home/extend/install/vlc-simple –disable-avcodec –disable-postproc –disable-a52 –disable-fribidi 

设置PKG_CONFIG_PATH环境变量,编译vlc时能自已寻找到qt库和头文件。其中/home/extern/install/qt4 /为编绎qt4时指定的安装目录。

export PKG_CONFIG_PATH=”/home/extern/install/qt4/lib/pkgconfig”

指定vlc 编绎后的安装目录为/home/extern/install/vlc-simple

3 执行./build_simple_vlc.sh 脚本,接下来已经漫长的等待时间。一切Ok的话, 在指定的安装目录/home/extern/vlc-simple下会看到已编译ok的vlc可执行文件和一些vlc库文件。

测试一下,我们所编绎的vlc程序(注意形在图形界面下的终端)

#cd /home/extern/install/vlc-simple/bin

#./vlc

success!可以看到vlc界面启动成功。

总结:以上编绎是vlc程序还仅仅只是能够实现音频解码,想要实现视频解码,还得编绎其它更多的依赖库文件。我的目标是学习vlc 的设计思想,编绎vlc对我来说只是学习它的方法之一,以上所编绎的vlc程序对我来说应是完全够用了。

PS:一个小技艺, 在查看configure 的配置选项,我喜欢先执行./configur

Vim好用的插件: YouCompleteMe

Vim代码补全现状

在漫长的Vim发展历史中,代码补全一直是比较被忽视的环节,相比众多IDE,vim本身的代码提示功能包括其众多补全插件显得无比简陋, 这是因为vim的先天不足,它是文本编译器,不能理解程序语意。引用王垠的一段文字:

“文本编辑器”这种东西一般都不真正的理解程序语言。很多 Emacs 和 vi 的用户以为用 etags 和 ctags 这样的工具就能让他们“跳转到定义”,然而这些 tags 工具其实只是对程序的“文本”做一些愚蠢的正则表达式匹配。它们根本没有对程序进行 parse,所以其实只是在进行一些“瞎猜”。简单的函数定义它们也许能猜对位置,但是对于有重名的定义,或者局部变量的时候,它们就力不从心了。

或许对于python,PHP等动态语言,因为本身的语言特性和丰富的工具支持,也能做到不错的补全效果,但对于C/C++代码的补全, AutoComplPop, omnicppcomplete, neocomplcache等插件的确都是在”瞎猜”。

还有一个原因是没有大牛来做这些功能。在漫长的Vim或emacs历史中,它都是掌握在少数精英程序员手里,扩展它都需要一定的专业知识,我辈普通程序员只是在使用它。而代码补全并不是大牛们的必须,我曾经和一个瑞典的PSE做Pair Programming, 只使用emacs和grep等linux命令,他就可以在整个工程里穿梭自如,常用库的调用了然于心,代码结构清晰,几乎没有语法和拼写错误。估计他看到我花里胡哨的vim, 还用代码提示,心里也是一阵鄙视吧。所以尽管大牛们让emacs可以煮咖啡,vim可以发微博,但是vim和emacs的代码提示一如既往的烂了二三十年。

在Apply公司支持的LLVM/clang诞生后,事情迎来了转机。clang强大语义分析能力,为C/C++/Object-C源代码级别的分析和转化提供了可能,基于clang的语意补全插件开始在vim和emacs上出现。

YouCompleteMe

YouCompleteMe是一个比较新Vim代码补全插件,可以基于clang为C/C++代码提供代码提示。它安装配置简单,Bug 很少。 对C/C++来说youcompleteme现在应该是最好选择,借助clang的强大功能,补全效率和准确性极高,而且可以模糊匹配(见下面的demo)。不管你的C++代码用什么怪异的写法,只要能编译通过,都能补全,即使是C++11的lambda和auto都没有障碍,比codeblock这些根据tag index补全的IDE都要强大。

YCM的安装配置

YCM需要最新版本Vim(7.3.584)的支持,从代码编译Vim的方法看这里
使用Vundle安装 youcompleteme后,需要先编译才能使用。

cd ~/.vim/bundle/YouCompleteMe
./install.sh –clang-completer

语意补全要正确工作,需要配置好.ycm_extra_conf.py文件,模板在这里。可以把这个文件放在项目的根目录下,打开项目文件时,YCM会循环向上搜索并加载这个文件,或者在vimrc文件中加入

let g:ycm_global_ycm_extra_conf = ‘your path to .ycm_extra_conf.py’

如果.ycm_extra_conf.py中include path等配置没有问题,YCM已经可以工作了。

YCM更新很频繁,最近版本已经可以和UltiSnip整合了。

2013-08-14更新

集成Syntastic

YCM很早就支持集成Syntastic了,上面demo里面,代码前的出现红色叉叉,就是YCM结合Syntastic爆出的语法错误。刚开始用YCM的时候,更看重其代码补全功能,Syntastic没放在心上,结果发现越用越离不开了。当编写C++代码的时候,每次光标悬停2秒钟以上的时候,YCM都会在后台扫描你当前的文件,你刚刚输入的代码有什么编译错误,马上就能显示出来,及时的改掉,不再积累到最后编译的时候。当然这是现代IDE的标配功能,vim中也有插件可以实现,但是有了YCM后,再用vundle安装Syntastic,甚至不用任何配置就实现了这些功能,实在是太方便了。

代码跳转

YCM支持代码跳转了,又一项对程序开发极有用的功能,现在支持c, cpp, object-c, object-cpp, python代码跳转到声明和实现。特别对c和c++, 这个跳转可不是像基于ctags的那些插件,经常让你在一大堆重名的tag里人肉搜索,十跳九不中。得利于clang的强大功能,YCM的代码跳转几乎没有失手,当然前提是你要设置好.ycm_extra_conf.py,代码被YCM解析时没太多编译错误。

主要功能是3个YcmCompleter的subcommands:

  • GoToDeclaration
  • GoToDefinition
  • GoToDefinitionElseDeclaration

在vim配置文件中加上一行就搞定了

nnoremap jd :YcmCompleter GoToDefinitionElseDeclaration

更多Vim相关教程见以下内容

把VIM打造成一个简单实用的IDE http://www.linuxidc.com/Linux/2011-06/37032.htm

Vim学习指南 http://www.linuxidc.com/Linux/2013-08/89096.htm

快速学会 Vi编辑器 http://www.linuxidc.com/Linux/2013-08/88586.htm

强大的Vim 编辑器 http://www.linuxidc.com/Linux/2013-07/87544.htm

CentOS 6.2上搭建Vim开发环境 http://www.linuxidc.com/Linux/2013-07/87363.htm

CentOS 5.4 安装高亮Vim编辑工具 http://www.linuxidc.com/Linux/2013-06/86508.htm

Vim技巧分享:C语言设置 http://www.linuxidc.com/Linux/2012-12/77124.htm

Ubuntu中设置Vim的行号 http://www.linuxidc.com/Linux/2012-12/75485.htm

Vim编辑器使用基础教程 http://www.linuxidc.com/Linux/2013-05/84031.htm

Linux 不报警的Hello World

以前都是在VC ++ 6.0下。vc下这样写:

  1. #include     
  2. void main()   
  3. {   
  4.    printf(“hello,world\n”);   
  5. }  

是不会提示警告的。但是放到Gcc环境里面就难说了

测试环境:CentOS 5.5  Final  ,gcc  4.1.2。

vim  test.c后,保存

cc -Wall  test.c  -o  test

./test后,提示

警告:‘main’ 的返回类型不是 ‘int’

既然返回的不是int,那把void去掉好了。

这下子好,一个警告变成两个警告了:(

test.c:3: 警告:返回类型默认为 ‘int’
test.c: In function ‘main’:
test.c:5: 警告:在有返回值的函数中,控制流程到达函数尾
把原来void地方改成  int  ,再执行:cc -Wall  test.c  -o  test 。

现在变成一个警告了,但是还有警告:(。具体提示如下:

test.c: In function ‘main’:
test.c:5: 警告:在有返回值的函数中,控制流程到达

Ubuntu下Vim+GCC+GDB安装及使用

Ubuntu下安装GCC和其他一些Linux系统有点不一样。

一)安装

vim)打开命令行运行sudo apt-get install vim,并按提示输入管理员密码。

gcc+gdb)输入命令行 运行 sudo apt-get install build-essential

build-essential包含gcc和gdb等工具,是C语言的开发包。

安装完了可以执行

gcc–version

的命令来查看版本,输出如下:

gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)

Copyright(C)2007FreeSoftwareFoundation,Inc.

编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。

gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。

二) 常用编译命令选项

假设源程序文件名为test.c。

1. 无选项编译链接

用法:#gcc test.c

作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

2. 选项 -o

用法:#gcc test.c -o test

作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

3. 选项 -E

用法:#gcc -E test.c -o test.i

作用:将test.c预处理输出test.i文件。

4. 选项 -S

用法:#gcc -S test.i

作用:将预处理输出文件test.i汇编成test.s文件。

5. 选项 -c

用法:#gcc -c test.s

作用:将汇编输出文件test.s编译输出test.o文件。

6. 无选项链接

用法:#gcc test.o -o test

作用:将编译输出文件test.o链接成最终可执行文件test。

7. 选项-O

用法:#gcc -O1 test.c -o test

作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

三) 多源文件的编译方法

如果有多个源文件,基本上有两种编译方法:

[假设有两个源文件为test.c和testfun.c]

1. 多个文件一起编译

用法:#gcc testfun.c test.c -o test

作用:将testfun.c和test.c分别编译后链接成test可执行文件。

2. 分别编译各个源文件,之后对编译后输出的目标文件链接。

用法:

#gcc -c testfun.c //将testfun.c编译成testfun.o

#gcc -c test.c //将test.c编译成test.o

#gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test

四)gdb调试器的使用

输入命令:gdb Cfilename,开始调试程序。

下面列出一些gdb常用命令:

l               输出第n行到n+9行的源代码

break       在第n行设置断点

info break        查看断点信息

r                    运行

n                ¼/div>

Vim 编辑器使用基础介绍

1. vim是什么

Vim是从vi发展出来的一个文本编辑器

2.为什么要使用vim:

在 Linux世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用Vim这个利器,可以实现对配置文件的修改设定。

利用man Vim 可以得到Vim的介绍以及用法:

 

120701116.png

3.如何使用vim

3.1 vim 编辑器的三种模式:

一般模式;编辑模式;尾行模式。

以 vim 打开一个档案就直接进入一般模式了(这是默认的模式) vim /PATH/../file

命令模式(Command Mode)下可以实现的功能:控制光标移动,删除字符,段落复制,粘贴。

编辑模式:进入一般模式后,按下(i, I, o,O, a, A, )等任何一个字母之后即可进入编辑模式,此时文件下发会有一个INSERT的字样提示。

120617616.png

 

 

尾行模式:在一般模式当中,输入( : / ? )三个中的任何一个按钮,就可以将光标移动到最底下那一行。在此模式下,可实现查找,替换等功能。

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2013-12/93853p2.htm

推荐阅读:

Vim学习指南 http://www.linuxidc.com/Linux/2013-08/89096.htm

快速学会 Vi编辑器 http://www.linuxidc.com/Linux/2013-08/88586.htm

强大的Vim 编辑器 http://www.linuxidc.com/Linux/2013-07/87544.htm

CentOS 6.2上搭建Vim开发环境 http://www.linuxidc.com/Linux/2013-07/87363.htm

Vim 7.4a 发布,全新更快的正则表达式引擎 http://www.linuxidc.com/Linux/2013-07/87035.htm

CentOS 5.4 安装高亮Vim编辑工具 http://www.linuxidc.com/Linux/2013-06/86508.htm

Vim技巧分享:C语言设置 http://www.linuxidc.com/Linux/2012-12/77124.htm

Ubuntu中设置Vim的行号 http://www.linuxidc.com

Linux CentOS的Vi/Vim命令

<

div id=”content” contentScore=”1691″>Linux CentOS的VI/VIM命令

插入命令:
 
a 在光标后附加文本
 A 在本行行末附加文本
 i 在光标前插入文本
 I 在本行开始插入文本
 o 在光标下插入新行
 O 在光标上插入新行
 
VI中的定位命令:
 
h、方向左键,左移一个字符
 j、方向下键,下移一行
 k、方向上键,上移一行
 l、方向右键,右移一个字符
 
$、移至行尾
 0、移至行首
 H、移至屏幕上端
 M、移至屏幕中央
 L、移至屏幕下端
 
 
 
[CTRL][d] 向下半页         [PageDown]
 [CTRL][f] 向下一页
 [CTRL][u] 向上半页
 [CTRL][b] 向上一页          [PageUp]
 
 
 
:set nu 设置行号
 :set nonu 取消行号
 gg 到第一行
 G 到最后一行
 nG 到第n行
 :n 到第n行
 
删除命令:
 
x、删除光标所在处字符
 nx、删除光标所在处后n个字符
 dd、删除光标所在行,ndd删除n行
 dG、删除光标所在行到末尾的内容
 D、删除从光标所在处到行尾
 :nl,n2d、删除指定范围的行
 复制和剪切命令:
 
yy、Y 复制当前行
 nyy、nY 复制当前行以下n行
 dd 剪切当前行
 ndd 剪切当前行以下n行
 p、P 粘贴在当前光标所在行下或行上
 替换和取消命令:
 
r、取代光标所在处字符
 R、从光标所在处开始替换字符,按Esc结束
 u、取消上一步操作
 搜索和替换命令
 
/string 、向前搜索指定字符串,搜索时忽略大小写 :set ic
 n、搜索指定字符串的下一个出现位置
 :%s/old/new/g 、 全漯div>

Vim基本使用指南

<

div id=”content” contentScore=”4739″>一般模式:移动光标的方法
h或 向左方向键(←)光标向左移动一个字符
j或 向下方向键(↓)光标向下移动一个字符
k或 向上方向键(↑)光标向上移动一个字符
l或 向右方向键(→)光标向右移动一个字符
如果想要进行多次移动的话,例如向下移动30行,可以使用”30j”或 “30↓”的组合按键,亦即
加上想要进行的次数(数字)后,按下动作即可!
[Ctrl]+ [f] 屏幕『向下』移动一页,相当于[PageDown]按键 (常用)
[Ctrl]+ [b] 屏幕『向上』移动一页,相当于[PageUp] 按键 (常用)
[Ctrl]+ [d] 屏幕『向下』移动半页
[Ctrl]+ [u]

0这是数字『 0』:移动到这一行的最前面字符处(常用)
$移动到这一行的最后面字符处(常用)
H光标移动到这个屏幕的最上方那一行
M光标移动到这个屏幕的中央那一行
L光标移动到这个屏幕的最下方那一行
G移动到这个档案的最后一行(常用)
nG移动到这个文件的第n行(常用)
gg移动到这个文件的第1行

n光标向右移动这一个行的n个字符
Nn 为数字。光标向下移动 n行(常用)
一般模式:查找与取代
/word 向光标之下寻找一个字符串名称为word的字符串。
?word 向光标之上寻找一个字符串名称为word的字符串。
n  n 是英文按键。代表『重复前一个搜寻的动作』的意思。
N 与 n刚好相反,为『反向』进行前一个搜寻动作。

:n1,n2s/word1/word2/g
n1与 n2为数字。在第 n1与 n2行之间寻找 word1这个字符 串,并将该字符串取代为word2!
:1,$s/word1/word2/g
从第一行到最后一行寻找word1字符串,并将该字符串取代为word2!(常用)

:1,$s/word1/word2/gc
从第一行到最后一行寻找 word1字符串,并将该字符串取代为word2!且在取代前显示提示字符给使用者确认(conform)是否 需要取代!(常用)
一般模式:删除、复制与贴上
x,X 在一行字当中,x为向后删除一个字符,X为向前删除一个字符
nx n 为数字,连续向后删除n个字符
dd删除游标所在的那一整列(常用)
ndd删除光标所在的向下 n列,

d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除游标所在处,到该行的最后一个字符
d0那个是数字的 0,删除游标所在处,到该行的最前面一个字符
yy复制游标所在的那一行(常用)
nyy复制光标所在的向下 n列,
y1G复制光标所在列到第一列的所有数据
yG复制光标所在列到最后一列的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
v 字符选择,会将光标经过的地方反白选择
V 行选择,会将光标经过的行反白选择
y,将反白的地方复制
d,将反白的地方删除

p为将已复制的数据在光标下一行贴上,
P则为贴在游标上一行!

u复原前一个动作。(常用)
[Ctrl]+r重做上一个动作。(常用)

一般模式进入编辑模式
i,I
插入:在目前的光标所在处插入输入之文字,已存在的文字会向后
退;其中,i 为『从目前光标所在处插入』,I 为『在目前所
在行的第一个非空格符处开始插入』。(常用)

a,A
a为『从目前光标所在的下一个字符处开始插入』,A 为『从光
标所在行的最后一个字符处开始插入』。(常用)
这是英文字母 o的大小写。

o,O
o为『在目前光标所在的下一行处插入新的一行』
O为在目前光标所在处的上一行插入新的一行!

r,R
取代:r会取代光标所在的那一个字符;R会一直取代光标所在的
文字,直到按下ESC为止;(常用)

Esc退出编辑模式,回到一般模式中(常用)

命令行模式:利用ESC切换到一般模式
:w将编辑的数据写入硬盘档案中(常用)
:q离开 vi(常用)
:q!若曾修改过档案,又不想储存,使用!为强制离开不储存档案。
:wq
:wq!则为强制储存后离开 (常用)

:setnu 显示行号,设定之后,会在每一行的前缀显示该行的
:setnonu 取消显示行号
:r[filename] 在编辑数据时候,读入另一个文件的数据

推荐阅读:

Vim学习指南 http://www.linuxidc.com/Linux/2013-08/89096.htm
快速学会 Vi编辑器 http://www.linuxidc.com/Linux/2013-08/88586.htm
强大的Vim 编辑器 http://www.linuxidc.com/Linux/2013-07/87544.htm
CentOS 6.2上搭建Vim开发环境 http://www.linuxidc.com/Linux/2013-07/87363.htm
Vim 7.4a 发布,全新更快的正则表达式引擎 http://www.linuxidc.com/Linux/2013-07/87035.htm
CentOS 5.4 安装高亮Vim编辑工具 http://www.linuxidc.com/Linux/2013-06/86508.htm
Vim技巧分享:C语言设置 http://www.linuxidc.com/Linux/2012-12/77124.htm
<a href=”http://www.linuxidc.com/topicnews.aspx?ti