`

vim的一个较全的介绍

 
阅读更多

http://www.cnblogs.com/dubing/archive/2011/12/16/2290421.html

http://blog.csdn.net/sabalol/article/details/3426635

http://hi.baidu.com/howard1980/blog/item/3399e42668751b0a908f9d5f.html

前篇回顾

  上篇介绍了linux下C编程基本环境配置以及相关工具使用选择。

  不过10个大牛9个用vim,那么咱们就来玩vim。linux下玩c就别依靠图形界面。好吧告别Ide,命令行才是c的王道。

  本篇文章感谢名为孙鹤同学的技术支持 感谢有爱的c大牛们

  本文中多处使用vim插件(孙鹤提供),这些插件大多是在http://www.vim.org/处下载。


 指针客串

  因为毕业后就没玩过c了,都说指针是c的重点。但是指针作为一种地址变量,为什么不直接操作变量本身呢。文章末尾为大家揭晓


vim的配置文件

  ~/.vimrc        用户的默认配置文件
  ~/.vim/plugin/   用户的默认脚本文件的存放目录
  ~/.vim/ftplugin/ 用户的默认文件类型相关脚本文件的存放目录


 vim提供的编程支持

  文本信息(行号、文件名等)
  代码缩进
  语法高亮
  快速定位
  标记位置
  全文搜索
  补全
  多文件编辑
  多窗口编辑
  函数列表
  文件列表
  函数跳转
  语法错误
  字符集的编码
  二进制查看

  等等...


初试vim

  在终端以root启动 输入vim命令 显示vim首页

:r filename 读入一个文件内容,并写入到当前编辑器中

按i进入插入模式

编辑完后:w保存

编辑完后按esc退出插入模式 进入正常模式

然后输入:sh进入shell

编译运行


文本信息配置

set nu(写入配置文件.vimrc中) 显示行号。
ctrl-g(正常模式下使用命令) 显示文件信息和当前行。
statusline.vim(插件) 增加底部状态栏。


代码缩进配置

filetype on(写入配置文件.vimrc中) 使vim对文件类型敏感。
autocmd FileType c,cpp,h :setlocal cindent cinoptions=:0,g0,t0(写入配置文件.vimrc中) 设置c缩进风格,具体详情参见:h cinoptions-values。
autocmd FileType c,cpp,h :setlocal et sta sw=4 sts=4 tabstop=4(写入配置文件.vimrc中) 设置一次缩进的距离是4个空格。
=(正常模式或者可视模式下使用命令) 按照缩进风格排版代码。
<(可视模式下使用命令) 向左缩进一级。
>(可视模式下使用命令) 向右缩进一级。


语法高亮

filetype plugin on(写入配置文件.vimrc中) 通常安装的vim中已经加入了各种语言的语法高亮插件,我们只需要打开文件类型相关的插件就可以了。


快速定位

gd(正常模式下使用命令) 跳转到局部变量定义处。
gD(正常模式下使用命令) 跳转到全局标量定义处。
*(正常模式下使用命令) 搜索并跳到下一个光标所在的单词。
g*(正常模式下使用命令) 功能接近*,但是查找的目标不带\<和\>单词分界符号。
#(正常模式下使用命令) 搜索并跳到上一个光标所在的单词。
g#(正常模式下使用命令) 功能接近#,但是查找的目标不带\<和\>单词分界符号。


标记位置

m{a-zA-Z0-9} (正常模式下使用命令) 在当前位置制作一个标记,标记名字可以使用a-z或者A-Z之间的任意字符,例如输入ma,就是将当前位置标记为a标记。注意a-z为单文件标记,不可跨文件使用,而A-Z0-9为全局标记,可以跨文件使用。
‘{a-zA-Z0-9} (正常模式下使用命令) 跳转到本文件的标记上。
:marks [{a-zA-z0-9}] (正常模式下使用命令) 查看指定标记的内容,不写标记号则查看所有。
:delm {a-zA-z0-9} (正常模式下使用命令) 删除一个标记。


全文搜索

:vimgrep(正常模式下使用命令) 全文搜索,功能同grep命令,但是支持在vim进行多文件跳转定位。
使用方法:vimgrep 正则表达式 文件。文件支持通配符,例如*.c代表所有的.c文件。如果希望递归搜索,可以使用**/*,表示搜索所有的文件。
:cl 列举结果
:cc(正常模式下使用命令) 当前结果
:cn(正常模式下使用命令) 下一个结果
:cp(正常模式下使用命令) 上一个结果
:cw(正常模式下使用命令) 重新打开搜索结果窗口


多文件编辑

vim f1 f2 …… fn(在shell下使用命令) 打开多个文件。
:e 文件名(正常模式下使用命令) 在vim中打开新文件。
:ls(正常模式下使用命令) 所有打开文件列表。
:bn(正常模式下使用命令) 到下一个文件。
:bp(正常模式下使用命令) 到上一个文件。
:b# 或 ctrl-6(正常模式下使用命令) 到最近的前一个文件。
set  autowriteall(写入配置文件.vimrc中) 如果讨厌每次打开新文件,vim喋喋不休的要求你保存,那么可以设置自动保存。


多窗口编辑
:sp  文件名(正常模式下使用命令) 横向拆分窗口(多行窗口)。
:vsp 文件名(正常模式下使用命令) 纵向拆分窗口(多列窗口)。
ctrl-w h(正常模式下使用命令) 将光标移动到左一个窗口。
ctrl-w j(正常模式下使用命令) 将光标移动到下一个窗口。
ctrl-w k(正常模式下使用命令) 将光标移动到上一个窗口。
ctrl-w l(正常模式下使用命令) 将光标移动到右一个窗口。
ctrl-w +(正常模式下使用命令) 当前窗口尺寸变大。
ctrl-w -(正常模式下使用命令) 当前窗口尺寸变小。
ctrl-w o(正常模式下使用命令) 只显示当前窗口。


函数列表
taglist.vim(插件) 列表插件。
let Tlist_Use_Right_Window = 1(写入配置文件.vimrc中) 如果希望列表在右侧显示,则加入这个配置,默认是左侧。
:Tlist(正常模式下使用命令) 显示函数列表。
d(在taglist窗口下使用) 从列表中删除文件。
+(在taglist窗口下使用) 展开文件。
-(在taglist窗口下使用) 折叠文件。
=(在taglist窗口下使用) 折叠所有文件。
x(在taglist窗口下使用) 显示或隐藏正常窗口。


文件列表
NERD_tree.vim(插件) 横向拆分窗口(多行窗口)。
let NERDTreeWinPos = 'right'(写入配置文件.vimrc中) 如果希望文件树在右侧显示,则加入这个配置,默认是左侧。
:NERDTree(正常模式下使用命令) 显示文件列表。


函数跳转
ctags(软件,需要另外安装) 生成多种语言tag文件的软件。
Ctags –R *.c(在shell下使用命令) 生成当前路径所有.c文件的tag,-R代表递归。
:ta 标记 或 [g] ctrl-] 列举标签(多个标签)或者跳转到标签(单个标签)。
ctrl-t 返回上一级。
:tags 列出标签栈。


语法错误
:make(正常模式下使用命令) 执行外部make命令,并且显示所有的编译警告和错误,并且可以在vim中定位。
:cl 列举结果
:cc(正常模式下使用命令) 当前结果
:cn(正常模式下使用命令) 下一个结果
:cp(正常模式下使用命令) 上一个结果
:cw(正常模式下使用命令) 重新打开搜索结果窗口


二进制文件查看 (鉴于有同学理解出现分歧 将二进制查看更新为二进制文件查看)

:范围!xxd(正常模式下使用命令) 把指定范围的部分转化为二进制文件阅读方式。
:范围!xxd -r(正常模式下使用命令) 把指定范围的部分转回字符阅读方式。


字符集的编码
let &termencoding=&encoding
set fileencodings=utf-8,gbk,cp936(写入配置文件.vimrc中)
 加入多种字符编码支持。
:set fileencoding(正常模式下使用命令) 设定文件字符编码。


补充

ctrl-p(插入模式下使用命令) 跳出补全菜单。
ctrl-n(在跳出补全菜单后) 下一个结果。
ctrl-p(在跳出补全菜单后) 上一个结果。
ctrl-y(在跳出补全菜单后) 选择当前结果。
ctrl-x ctrl-f(插入模式下使用命令) 文件名补全。
ctrl-x ctrl-i(插入模式下使用命令) 包含的头文件。
ctrl-x ctrl-](插入模式下使用命令) ctags(将在下文中介绍)符号补全。
ctrl-x ctrl-o(插入模式下使用命令) omni补全,需要设置omnifunc变量。


vim其他命令 (参考vi(vim)教程)

打开文件、保存、关闭文件:

vi filename       //打开filename文件
:w              //保存文件
:w vpser.net  //保存至vpser.net文件
:q             //退出编辑器,如果文件已修改请使用下面的命令
:q!           //退出编辑器,且不保存
:wq              //退出编辑器,且保存文件

插入文本或行:

a      //在当前光标位置的右边添加文本
i       //在当前光标位置的左边添加文本
A     //在当前行的末尾位置添加文本
I      //在当前行的开始处添加文本(非空字符的行首)
O     //在当前行的上面新建一行
o     //在当前行的下面新建一行
R    //替换(覆盖)当前光标位置及后面的若干文本
J    //合并光标所在行及下一行为一行(依然在命令模式)

移动光标:

使用上下左右方向键

命令模式下:h   向左、j   向下 、k   向上、l  向右。
空格键 向右、Backspace  向左、Enter  移动到下一行首、-  移动到上一行首。

删除:

x         //删除当前字符
nx        //删除从光标开始的n个字符
dd      //删除当前行
ndd   //向下删除当前行在内的n行
u       //撤销上一步操作
U      //撤销对当前行的所有操作

搜索:

/vpser     //向光标下搜索vpser字符串
?vpser    //向光标上搜索vpser字符串
n           //向下搜索前一个搜素动作
N           //向上搜索前一个搜索动作

跳转:

n+        //向下跳n行
n-         //向上跳n行
nG        //跳到行号为n的行
G           //跳至文件的底部

设置行号:

:set  nu     //显示行号
:set nonu    //取消显示行号

复制:

yy    //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
nyy   //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
yw    //复制从光标开始到词尾的字符。
nyw   //复制从光标开始的n个单词。
y^      //复制从光标到行首的内容。 

y$      //复制从光标到行尾的内容。
p        //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap 进行粘贴。
P        //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用"aP 进行粘贴。

替换:

:s/old/new      //用new替换行中首次出现的old
:s/old/new/g         //用new替换行中所有的old
:n,m s/old/new/g     //用new替换从n到m行里所有的old
:%s/old/new/g      //用new替换当前文件里所有的old

编辑其他资源:

:e otherfilename    //编辑文件名为otherfilename的文件。

修改文件格式:

:set fileformat=unix   //将文件修改为unix格式,如win下面的文本文件在linux下会出现^M。


客串答案

  c传递参数都是值传递的,指针的一个作用是为了解决实现类似引用的效果,另外,使用指针可以直接操作内存!

  孙鹤同学的解释:

  每个线程有固定大小的栈,通常主线程的栈默认一般是8M,用指针去引用内存,往往是在使用堆内存,栈是有限的,并且受生存期影响,所以用堆的情况要比用栈更多,有些东西生存期很长,超过一个函数的调用,那么就需要用堆内存。


 本篇到此 希望对大家有帮助

 

 

 

 

下载地址:http://www.vim.org/scripts/script.php?script_id=273


“Tag List" 插件是一个为VIM编写的源代码浏览插件,需要ctags的支撑 ,直接可以在左边列出函数列表,全局参数列表,宏。(可以排序)

1、下载taglist.zip文件,解压到$HOME/.vim目录下,或者$HOME/vimfiles或$VIM/vimfiles目录下,在这一步后,你应该有这两个文件(目录结构应该被保留)

         plugin/taglist.vim - taglist 插件文件
         doc/taglist.txt    -  文档(帮助)文件

2. 进入 $HOME/.vim/doc 或者 $HOME/vimfiles/doc 或者 $VIM/vimfiles/doc 
    目录, 运行Vim,在命令行模式下运行 ":helptags ." 命令处理taglist帮助文件,如果没有这上步,你将不能得到taglist帮助提示

3、如果ctags工具不在你的PATH搜索路径中,你需要在$HOME/.vimrc中设置Tlist_Ctags_Cmd 变量指出ctags的路径。

4、如果你运行的是terminal/console版本的VIM,以及terminal 不支持改变窗口的宽度,你需要在$/HOME/.vimrc设置    'Tlist_Inc_Winwidth'  变量为0,

5、重启vim

6、你可以在vim的命令行模式中使用 ":TlistToggle" 命令打开/关闭taglist窗口,你可以使用 ":help taglist" 命令得到更多的关于使用taglist插件的信息

 

 

NERDTree的安装和使用
2009-09-03 12:47
NERDTree来自:
http://www.vim.org/scripts/script.php?script_id=1658

A,安装。
1,解压后,拷贝plugin/NERD_tree.vim文件到~/.vim/plugin下。拷贝doc/NERD_tree.txt文件到~/.vim/doc下

2,打开vim,加载文档。
:helptags ~/.vim/doc/NERD_tree.txt

以后查看帮助只要 :h NERD_tree.txt 即可。

B,常用使用。
1,标签。
1 - 1,打开一个目录。 :NERDTree ~/share/abc
1 - 2,标记它。 :Bookmark your_mark_name_of_abc
1 - 3,打开这个标签。 :NERDTree your_mark_name_of_abc  效果同 1 - 1。
2,快速帮助
光标在NERDTree的目录工作区时候,按?键。
 

 

去除高亮

方法一::nohlsearch
方法二:/awertgvcxz (查找一个肯定不存在的字符串)
设置了高亮搜索(:set hlsearch)以后,可以通过 :set nohlsearch 永久地关闭高亮
显示,也可以通过 :nohlsearch 暂时关闭高亮显示,下次搜索时将自动恢复高亮。

 

 

分享到:
评论

相关推荐

    Pro Vim英文版

    虽然Vim的学习曲线相对较陡,但一旦掌握了基础,就能显著提高编辑速度。Pro Vim这本书详细介绍了如何快速上手,包括常用的命令行键绑定、模式切换以及文本对象选择等。 **3. Vim的插件系统** Vim的强大在于其丰富的...

    vim-rpm安装集合包

    **vim-rpm安装集合包详解** `vim-rpm` 是为Linux系统设计的Vim编辑器的RPM软件包,适用于i386架构。...Vim作为一个强大的文本编辑器,特别适合语言开发,其丰富的特性以及可扩展性使得它成为许多开发者的首选工具。

    简明 Vim 练级攻略

    - **学习步骤**:文章提出了一个四阶段的学习框架:“存活”、“感觉良好”、“觉得更好、更强、更快”以及“使用 Vim 的超能力”。这一框架帮助学习者逐步进阶,最终达到精通的程度。 ### 知识点二:第一级 - 存活...

    vim中文乱码解决方案

    在使用Vim编辑器时,中文乱码问题是一个常见的现象,特别是在Fedora和Ubuntu等Linux发行版中更为突出。本文将详细介绍如何解决Vim中的中文乱码问题,并提供一些实用的配置方法。 #### 二、Vim简介 Vim是一款基于...

    vim 8.0 用户手册中文版 带书签

    Vim具有多个版本,而Vim 8.0作为其中一个较新的版本,提供了更多的功能和改进。 从给定的文件内容可以提炼出以下知识点: 1. Vim用户手册的获取与使用:手册可以从在线资源(如***/yianwillis/vimcdoc)下载,并且...

    VIM中文手册(学习VIM的帮助)

    本手册将深入介绍VIM的基础知识,帮助用户掌握这款编辑器的使用。 一、VIM的基本操作模式 VIM有三种主要的操作模式:普通模式(Normal Mode)、插入模式(Insert Mode)和可视模式(Visual Mode)。 1. 普通模式...

    vim 介绍 常用命令 键盘图

    Vim的开发者Bram Moolenaar在1980年代末开始开发Vim,最初是为了在Amiga计算机上获得类似vi的编辑体验,随后逐渐发展成为一个跨平台、功能丰富的文本编辑工具。 Vim的历史可以追溯到1991年的1.14版本,它最初是Vi的...

    vim 中文帮助手册

    - **Vim与其他编辑器的区别**:Vim因其强大的灵活性和自定义能力,在复杂的文本编辑与格式化方面表现突出,但这同样意味着较高的学习曲线。 #### 二、Vim使用过程中的三个阶段 1. **初级阶段(入门)**: - 特征...

    超级好用vim配置

    如果你是Vim的新手,这个配置会是一个很好的起点,帮你逐步熟悉并爱上这个强大的编辑器。而文件名`gVimPortable_7.4`很可能指的是便携版的图形界面Vim,这样即使在没有安装Vim的电脑上,也能直接使用这些配置。

    Vim进阶索引

    ### Vim进阶索引知识点详解 #### 一、Vim简介与重要性 Vim是一款功能强大的文本编辑器,...虽然它的学习曲线相对陡峭,但通过正确的学习方法和资源,任何人都可以逐步掌握其核心功能,并最终成为一个高效的Vim用户。

    Vim中文手册

    这部分内容为那些需要深入了解Vim内部工作原理和更复杂命令的用户提供了一个平台。例如,“编辑和写入文件”部分详细描述了如何在Vim中进行文本的插入、删除、替换以及撤销和重做等操作。还有针对特定编程语言(如...

    python写vim script 之 山寨版 dbext

    Python写vim script之山寨版dbext,这个主题主要围绕如何使用Python语言来编写Vim插件,特别是构建一个类似于dbext的功能。dbext是Vim中一个非常实用的数据库扩展,它允许用户在Vim环境下直接操作数据库,执行SQL...

    VIM命令、快捷键使用介绍

    VIM(Vi IMproved)是一款强大的...尽管VIM的学习曲线较陡峭,但一旦掌握,你会发现它是一个不可或缺的工具,尤其是在Linux环境中。为了更深入地学习VIM,建议参考官方文档或在线教程,同时实践是提高技能的最好方式。

    程序员的编辑器——VIM(zz) - 饮水思源

    VIM(Vi IMproved)是Linux世界中广受欢迎的文本编辑器,对于程序员来说,它不仅是一个工具,更是一种高效的工作方式。这篇文章将深入探讨VIM的使用技巧和重要概念,帮助你提升编辑效率。 首先,VIM的操作模式是其...

    Ubuntu20.04安装vim出现的相关问题及解决方法

    然而,在Ubuntu 20.04系统上安装Vim时可能会遇到一些问题,本文将详细介绍这些常见问题及其解决方案。 #### 二、Linux版本与环境配置 - **系统版本**:Ubuntu 20.04 LTS - **目标软件**:Vim 文本编辑器 #### 三...

    vimbook-OPL-Vi iMproved (VIM).pdf

    这本书深入浅出地介绍了VIM的基本操作、高级特性以及实战技巧,旨在帮助读者从新手进阶到熟练掌握VIM的专家。 1. VIM简介:VIM是一款命令行下的文本编辑器,最初由 Bram Moolenaar 基于Bill Joy的Vi开发。它强调...

    vim的格式化插件,调用indent进行格式化

    首先,`indent` 是 Vim 内置的一个功能,用于根据语法规则自动调整代码缩进。它可以处理多种编程语言,包括 C、C++、Python 等。通过调用 `indent`,你可以快速地将杂乱无章的代码整理得井井有条。 在标题中提到的...

    vim用户手册

    - **社区支持**:Vim有一个活跃的社区,用户可以通过论坛、邮件列表等方式获取帮助和支持。 - **教程与指南**:网络上有大量的Vim教程和指南,帮助新手快速入门。 - **插件市场**:许多第三方插件提供额外的功能,如...

    30分钟让你学会VIM(双语版)

    - **准备工作**: 为了不影响原始文件,建议创建一个副本进行练习。 #### 三、VIM Tutor使用指南 1. **环境设置**: - 在开始之前,请确保你的Shift-Lock键未被锁定,以便正常输入命令。 - 使用`vimtutor`命令启动...

Global site tag (gtag.js) - Google Analytics