热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

Linux系统下vim编辑器的配置说明

最近安装的suseenterprise10上面,vim还是默认的设置,使用起来很不顺手,花了一晚上的时间做了一下配置,从网上差了许多资料,整理一下,为以后做个备份~~vim版本:7.3,suse10默认安装的版本是6.4有点老,nerdtree不支持,先从vim官网上下载个最新版本,

最近安装的suse enterprise 10上面,vim还是默认的设置,使用起来很不顺手,花了一晚上的时间做了一下配置,从网上差了许多资料,整理一下,为以后做个备份~~

vim版本:7.3,suse10默认安装的版本是6.4有点老,nerdtree不支持,先从vim官网上下载个最新版本,root用户安装;

1. vimrc基础配置:

set nocp

syntax on               "语法高亮"

set nocompatible        "使用vim的键盘模式"

set nu                  "设置行号"

set nobackup            "不需要备份"

set confirm             "未保存或者只读时,弹出确认"

set mouse=a             "鼠标可用"

set selection=exclusive

set selectmode=mouse,key

set showcmd             "显示未完成命令"

set tabstop=4           "tab为4个空格"

set shiftwidth=4        "行交错"

set cindent             "c文件类型自动缩进"

set autoindent          "自动对齐"

set smartindent         "智能缩进"

set hlsearch            "高亮查找匹配"

set background=dark     "背景色"

set showmatch           "显示匹配"

set ruler               "右下角显示光标位置"

set fillchars=vert:/ ,stl:/ ,stlnc:/ "被分割的窗口之间显示空白"

set noerrorbells        "不发出警告声"

set foldenable

set foldmethod=syntax

nnoremap @=((foldclosed(line('.')) <0) ? 'zc' : 'zo') "空格控制折叠"

filetype plugin indent on 

set fileencodings=gbk,utf-8,gb2312,gb18030,cp936

set termencoding=gbk,utf-8,gb2312,gb18030,cp936

2. 树状结构

需要NERDTree插件,我这边下载的是5.8的版本,下载完之后在.vim文件夹下解压即可;

在vimrc中添加快捷键:

nnoremap :NERDTree

F1可以显示目录树状结构。(也可以替换为其他的键,我比较习惯与F1)

3. 自动补全和ctags设置

我用vim主要是用来写c和c++代码,偶尔也会有一些sh脚本,所以如果有c和c++类型的自动补全,会方便很多。

这里需要两个插件,一个是ctags,用来生成tags文件;一个是omnicppcomplete,自动补全的插件。与NERDTree一样,直接解压到.vim文件夹下。

设置生成tags的快捷键:

nnoremap :sil !find -maxdepth 1 -name '*.[ch]' -print0 -o

/ -name '*.cpp' -print0 /| xargs -0 ctags --c++-kinds=+p --fields=+iaS --extra=+q

nnoremap :sil !find -maxdepth 1 -name '*.[ch]' -print0 -o

/ -name '*.h' -print0 /| xargs -0 ctags --c++-kinds=+p --fields=+iaS --extra=+q

分别设置F2和F3为生成C++ tags的快捷键,有了tag文件,在编辑文件的时候,直接ctrl+n,ctrl+p就可以自动补全了。 

如何在多个文件(一个工程中)做到自动补全,这个还没有研究过,有知道的朋友可以指导下?

4. 自动生成文件头

主要就是一些日期,作者等描述信息,自己写一个模版放到.vim文件夹下,假设叫做skeleton,在vimrc中编辑下面的命令:

"预生成文件头"

fun! LoadSkeleton()

    let file = $HOME . "/.vim/skeleton"

    if filereadable(file)

        exe "0read " . file

     exe "normal! G"

    endif

    exe "call CreateTime()"

    exe "normal! G"

endfun

 "生成时间"

fun! CreateTime()

         if line("$") > 20

                let l = 20

         else

                 let l = line("$")

         endif

         exe "1," . l . "s/date: .*/date:    " . strftime("%Y %b %d %X") . "/e"

endfun

"设置预加载文件头的文件类型"

au BufNewFile *.c call LoadSkeleton()

au BufNewFile *.h call LoadSkeleton()

au BufNewFile *.cpp call LoadSkeleton()

au BufNewFile *.sh call LoadSkeleton()

我这边skeleton的格式如下:

/************************************************

*

  * author:      ####

  * date:        2011 Mar 19 00:57:10 AM

  * mail:        ####

  * version:     1.0.0.0

  * function:    

  *   

  * **********************************************/

一个很简单的头,vimrc中替换了时间,并对于.c,.cpp,.h,.sh结尾的文件自动加载这个头;

5. 关于折叠

如下设置,可以用空格键直接控制折叠

set foldenable 

set foldmethod=syntax 

nnoremap @=((foldclosed(line('.')) <0) ? 'zc' : 'zo')  

基本上vim就配置ok了,用起来也比较顺手,宽屏下vsp加tree看起来确实很舒服,hiahia。

我的vim配置文件上传到了资源里面,nerdtree,ctags和omnicppcomplete都已经在里面(vim版本7.3)。地址是http://download.csdn.net/source/3107162

 


推荐阅读
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 本文详细介绍了如何规划和部署一个高可用的Etcd集群,包括主机配置、软件安装、防火墙设置及集群健康检查等内容。通过合理的硬件配置和网络规划,确保Etcd集群在生产环境中的稳定运行。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文详细介绍了Vim编辑器的三种主要模式及其常用命令,帮助用户更好地掌握这一强大的文本编辑工具。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文介绍了在MacOS上通过Homebrew安装Anaconda3,并配置环境变量以实现不同Python版本之间的快速切换。同时,提供了详细的步骤来创建和管理多个Python环境。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
author-avatar
happy玛奇朵_387
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有