【转】谁说Vim不是IDE?(二)
谁说Vim不是IDE?(二)
环境配置
“如果你认为Vim只是一个文本编辑器,你就输了”——来自Vim老鸟
Vim以简洁的方式提供了丰富的配置功能,主要配置体系由一个文件和文件夹组成。在一台安装了Vim的OS X/Linux/Unix机器上,进入用户主目录,可以找到.vimrc文件和.vim文件夹,这就是Vim所有的配置信息。
(1).vimrc介绍
用户目录下的.vimrc文件就是Vim针对当前用户的主配置文件,该文件不是必备的,没有的话就创建它。文件位于当前用户的主目录下,可以用~/.vimrc
找到,Vim启动时会自动运行文件中的每条命令。
通过.vimrc我们可以为Vim进行个性化配置,包括使用方式、显示风格、编写函数和运行插件等,.vimrc中所有的命令都可以在Vim运行时通过类似:comm args[=args1]
的方式动态运行,即时生效。
以下是一个.vimrc的样例脚本,包含了一些常用配置,后面的注释是简要说明。
.vimrc的注释用双引号(")表示 ,样例中的大括号仅表示功能区,属于注释的一部分,无其他含义
.vimrc的配置非常丰富,可以定义各种宏、函数、插件和映射,我见过最长的.vimrc配置有1000多行,这里的示例比较简单,适合入门级用户

syn on "语法支持 "common conf {{ 通用配置
set ai "自动缩进
set bs=2 "在insert模式下用退格键删除
set showmatch "代码匹配
set laststatus=2 "总是显示状态行
set expandtab "以下三个配置配合使用,设置tab和缩进空格数
set shiftwidth=4
set tabstop=4
set cursorline "为光标所在行加下划线
set number "显示行号
set autoread "文件在Vim之外修改过,自动重新读入 set ignorecase "检索时忽略大小写
set fileencodings=uft-8,gbk "使用utf-8或gbk打开文件
set hls "检索时高亮显示匹配项
set helplang=cn "帮助系统设置为中文
set foldmethod=syntax "代码折叠
"}} "conf for tabs, 为标签页进行的配置,通过ctrl h/l切换标签等
let mapleader = ','
nnoremap <C-l> gt
nnoremap <C-h> gT
nnoremap <leader>t : tabe<CR> "conf for plugins {{ 插件相关的配置
"状态栏的配置
"powerline{
set guifont=PowerlineSymbols\ for\ Powerline
set nocompatible
set t_Co=256
let g:Powerline_symbols = 'fancy'
"}
"pathogen是Vim用来管理插件的插件
"pathogen{
call pathogen#infect()
"} "}}

(2).vim文件夹
.vim是Vim的主配置文件夹,位于当前用户的主目录下,可以用cd ~/.vim
进入。该文件夹一般用来放置插件和相关的帮助文档,常用的目录结构包括:
doc //帮助文档目录
autoload //Vim启动时自动加载的插件目录
plugin //插件目录,一般在使用Vim时通过命令呼出
当然,如果你已经安装了足够多插件,那么这个目录下就会变得五花八门,syntax、snippets、indent等文件夹都会冒出来了。一个插件所包含的文件往往会分布在多个文件夹下,管理起来比较麻烦,稍后我们会介绍一个管理插件的插件,让这个目录变得干净整洁,容易管理,这个插件的名字叫pathogen!
在Vim中输入命令:help
,即可进入帮助页面,默认是英文帮助,如果你喜欢看中文,可以通过以下方式安装中文帮助内容:
- 下载中文帮助的文件压缩包
- 解压,把doc目录下的文件复制到~/.vim/doc下
- 确认在.vimrc中设置了
set helplang=cn
- 输入命令
:help
即可进入中文帮助
基本概念
下面我们来介绍一下Vim中的几个基本概念:Buffer、Window和Tab-page。
- Buffer:使用Vim打开的文件都会被加载到内存中,在内存中我们使用Buffer来描述被编辑的文件,一个Buffer对应一个被编辑的文件副本。当我们在完成了一个Buffer的编辑后就可以保存该文件。Buffer不仅包含了文件的内容,也记录了该文件的编辑状态等配置信息,比如激活、隐藏、上次编辑行数等,具体可以查阅帮助文档。
用Vim可以打开多个文件同时编辑,也可以把不需要的文件关掉,但这时文件副本依然保存在缓冲区中,我们可以通过:ls
或:buffers
查看这些Buffer,还可以通过类似:buffer n
的方式重新打开文件(n表示Buffer的序号)。当然,我们有更好的方式来处理这些Buffer,那就是CommandTBuffer,要想使用CommandTBuffer,先要安装CommandT插件,请大家记住这个插件的名字,稍后介绍。 - Window:是对应Buffer的一个展示窗口。一个Buffer可以对应多个窗口,比如我们可以通过
:split filename
或:vsplit filename
命令在多个窗口打开一个文件,当修改某一个窗口的文件是,其他窗口都会同步更新。当然我们也可以在多个窗口打开多个文件,编辑后用:wq
保存退出,但是记住,只要没有最终退出Vim进程,那么这些打开的文件Buffer依然保存在缓存区中,可以随时再次打开。 - Tab-page:Tab-page就比较容易理解,对应一组窗口,我们可以通过`:tabedit filename`在另一个标签页中打开一个文件,在这个标签页中又可以打开多个窗口。
下图可以清晰的表达Buffer、Window和Tab-page的关系:
理解了这三个概念和三者之间的关系,对我们用好Vim有非常大的帮助。
待续,下一篇是Vim的插件篇......
身边越来越多的人开始使用Mac,经常被问道Mac的使用问题和技术问题。遂决定,每天发布一则#Mac技巧#。同时发布于微博和微信公众账号“Mac技巧”,微信号sagacity-mac,有微信账号的童鞋扫描下图片或搜索微信号即可

【转】谁说Vim不是IDE?(二)的更多相关文章
- 【转】谁说Vim不是IDE?(三)
谁说Vim不是IDE?(三) 常用插件 之所以说Vim形成了自己的生态环境,就是因为Vim具备开放的插件体系,开发者为了提升开发效率,为Vim编写了数以万计的插件,我们可以根据需要任意选择,也可以 ...
- 【转】谁说Vim不是IDE?(一)
谁说Vim不是IDE?(一) 话说操作系统.编程语言和编辑器似乎是程序员永恒的吐槽话题,技术发展了几十年,大家讨论起这几个“之争”还是充满愤怒.津津乐道.有人描述过Emacs和VI程序员,大家沿着 ...
- vim as python IDE
参照Martin Brochhaus大神的视频,今天我也尝试了一下配置vim python IDE以后使用过程中只需要https://github.com/wyj1239630590/vim-as-a ...
- Linux+环境使用vim搭建php+IDE
让我们开始DIY吧-!!终端下执行命令:whereis vim 将列出vim安装的路径. 否则执行 sudo apt-get install vim 安装vim .成功安装了vim,只需要在用 ...
- vim配置轻量级IDE
安装VIM 安装YouCompleteMe的时候, 需要VIM的版本比较高, 一般一些Linux长期支持版的Vim包就比较老, 所以可能需要编译安装. 卸载之前系统中安装的版本: CentOS/Fed ...
- 把VIM打造成IDE
======================================= 安装vim相关软件 =============== ...
- vim的正则表达式(二)应用实例
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- vim打造开发IDE
个人的插件和配置 set nocompatible " 去除VI一致性,必须要添加 filetype off " 必须要添加 " advanced keys " ...
- MACOS配置VIM成简单IDE傻瓜式操作
零.参考文献: https://www.jianshu.com/p/f0513d18742a 一.安照我的配置:保存文件 " Configuration file for vim " ...
随机推荐
- ios8.1.2耗电情况严重的解决方法
打开cydia,搜索ifile(威锋源,版本2.1.0-1).打开ifile,进入路径/Applications.里面有许多程序文件,选择适当的进行禁用(ifile可以禁用程序的活动而不完全删除它,这 ...
- python学习--string
1\string are immutable, which means you can't change an existing string. >>>greeting = 'Hel ...
- xcode 升级插件失效问题
摘要 Xcode 升级到7之后VVDocumenter-Xcode,OMColorSense,KSImageNamed等一系列的插件失效的解决办法,以及不小心误点了 Skipbundle 的解决办法 ...
- iOS oc 中的闭包
//闭包 NSString* s =@"123"; void (^block)() = ^() { NSLog(@"%@",s); }; block();// ...
- PPT2010小技巧 教你如何快捷抠图
相信不少人在做PPT时,都有想插入个漂亮个性图案的想法,但是往往手头上的图片都不太令人满意,需要“裁剪”一下才能达不到自己想要的效果.这时大部分人可能会PS,但是相比起今天要分享给大家的方法,步骤就显 ...
- Docker 安装jupyter notebook
1. 利用image运行一个container sudo docker run -it --net=host tingting --net=host:让container可以上网,安装原来的sudo ...
- C++程序的构成和书写形式
C++程序的结构和书写格式归纳如下: (1) 一个C++程序可以由一个程序单位或多个程序单位构成.每一个程序单位作为一个文件.在程序编译时,编译系统分别对各个文件进行编译,因此,一个文件是一个编译单 ...
- 今天把登陆注册给改成tab了
真是解决了一个心头大患,本来以为必须请外包公司的工程师才做,自己研究了下也给解决了. 多亏去年做原型时学习了smarty.css.html这些最基本的网站前端开发的技术.FTP上传下载.linux的基 ...
- USB 3.0连接器引脚、接口定义及封装尺寸
上篇整理了USB 2.0A型.B型和Mini USB接口定义及封装,本文补充USB 3.0接口定义,USB 3.0采用的双总线结构,在速率上已经达到4.8Gbps,所以称为Super speed,在U ...
- What exactly is the difference between WndProc and DefaultWndProc?
Control.DefWndProc Sends the specified message to the default window procedure. 参数说明:m:The Windows M ...