最近有一款编辑器叫sublimeText 2比较流行,我也下载用了一下,确实很好看,自动完成,缩进功能什么的也比较齐全,插件也十分丰富。但用起来不是很顺手,最后还是回到了Gvim(Vim的GUI版本,除了一些GUI可以额外设置,颜色支持更多外基本与Vim没有区别)的怀抱,我并没有花很多时间去把玩ST2,没法评论那个更好,不过也许Gvim会更适合我。所以想写几篇博文记录下一路学习Gvim的过程。

  写在前面:

  (1)我用的是Gvim7.3_46,系统是win7

  (2)这一系列文章不会详细的介绍Vim的每一个命令的用法

  (3)我会尽量的配图,千言万语有时候真的没有一张图片来得直观

  (4)Gvim下载地址Gvim需要爬墙

  什么叫有感觉呢?最近看了很多相亲的帖子(没错,楼主也是大龄苦逼单身屌丝码农T-T)。经常某某会这样说:“我的要求不高,对方有感觉就好。”,这其实是一个很高的要求,类似于你希望微软为了让你写程序有感觉而推出一个量身打造的VS-For-You,当然你有足够的金钱也不是不可能的(这点和某些相亲情况类似)。话扯远了,我想说的是也许这辈子我们都无法找到一个真正有感觉的人,但这阵子我们完全就可以打造一个有感觉的Vim。

  顺眼的外表:

    按照上面的下载地址路安装完成之后,来看看我们素颜的Gvim姑娘

    

    而在Gvim安装的根目录下你可以看到一个这样的文件_vimrc,这个是Gvim的配置文件,未修改过的内容如下

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction

  这是一些基本的配置和一个函数,暂时不用管这些。现在我们来看看Gvim外观的一些设置。

  首先是要说的是Gvim的设置大多是通过set [key]=[value]这个命令来实现。而Vim有三个基本的模式(正常模式,编辑模式,和底行模式)set命令需要在底行模式中执行,而进入底行命令需要在正常模式中按下:,这时候你就会在底部看见一个要求输入命令的行。

而正常模式是编辑模式和底行模式的转换层(编辑模式需要在正常模式中按下某些键,例如:i,I,a,A等等,进入),因为正常模式是Vim的默认模式,现在我们只需要按下:进入即可。

我们通过在底行模式下输入browse set可以看到当前的设置

此时当前窗口被分割成了两个部分,通过浏览上面窗口的内容我们可以知道当前Gvim的各个设置和每个设置控制的外观属性。

为了打造Gvim小姐,我们需要对以下几个设置进行更改。

guioptions:缩写是go 主要控制Gvim的图形外观,默认只是egmrLtT,每个字母的意义如下:
                e.(这个不知道)
                g.令Gvim的无法使用的菜单选项变为灰色
         m.显示菜单栏
         r.显示右边的下拉条L.当垂直分割窗口的时候显示左边的下拉条
t.(这个不知道)
T.显示工具栏

既然用Vim了那么我们可能基本上就不会再用到工具栏和菜单栏了,一切操作都应该以快捷键和命令完成,所以我们不需要这些设定。不需要菜单栏,不需要下拉条,不需要工具栏。只需要一个窗口就好。我们只需要简单的将go设置成空就行了,命令如下

:set go=

Gvim变成了下面这个样子

这个字体看起来不是很舒服,我们还需要对字体设定一下,这个选项是guifont,首先我们调出字体设置的页面,输入如下命令即可

:set guifont=*

命令成功执行后会弹出下面的对话框

我选择了如图所示的字体,点击确定后Gvim如下

 

我们还需要记录下当前字体的设置,然后将其写如配置文件中,这样就不用每次打开Gvim都要重新设定一下了。查看任意一个设置的当前值得命令为:set [key]?,所以查看当前字体设定的命令如下

:set guifont?

guifont的值会在当前输出

当编辑的时候我们不希望屏幕中间还有一个鼠标停在那里,只要如下设定即可达到目的

:set mousehide

这样当我们按下键盘的时候鼠标就会消失了

我们还需要设置一下Gvim的高和宽,最好是全屏,所以我们要设置一下Gvim的行数和列数

:set lines=150 columns=1000

这只是一个大概的设置,但是你应该设置一个超过当前行数和列数的值来保证Gvim窗口的最大化,因为之前我们已经设置了没有下拉条并且Gvim的默认设定会自动折行所以这样设置并没有问题,但你也可以使用下面这个命令来保证最大化到精切的行数和列数

au GUIEnter * simalt ~x

但是这个命令只能保存到配置文件中,因为这是一个响应Gvim打开的自动命令,就是在每次Gvim打开是模拟执行Windows最大化窗口的快捷键(Alt+空格+x)

下面来切换一下Gvim的主题,在Vim的根目录下有一个colors文件夹里面就存放了Vim的默认安装的主题,如下图

我们只需要输入:colo [ThemeName] 例如

:colo evening

此时Gvim的窗口如下

 

你也可以访问100个顶级Vim主题下载(需爬墙)获得,下载完成后解压出.vim后缀的文件放到colors文件夹下进入Vim中用:colo设定即可

最后我们要将这些配以一起写到前文提到的_vimrc中,这样每次Gvim启动我们就不需要再次设置了。最后的_vimrc文件如下

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
"无菜单工具条
set go=
"设置Gvim字体
set guifont=Consolas:h11:cANSI
"Gvim打开即进入全屏
au GUIEnter * simalt ~x
"设置主题
colo evening
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction

gvim设置使用的更多相关文章

  1. GVIM设置背景颜色

    首先找到GVim的安装目录,在安装目录下你可以发现一个_vimrc文件,使用文本编辑器打开后在里面添加两行代码即可:代码如下set gfn=Courier_New:h14colorscheme tor ...

  2. gvim设置成不备份文件

    打开gVim,进入“编辑”-“启动设定” 在“behave mswin”下行位置添加 set nobackup 语句 退出并保存配置文件 :wq

  3. gvim设置字体和隐藏菜单栏工具栏

    liunx下面设置字体 set guifont=Monaco\ 注意空格的位置,其他写法不认哦! Windows下面设置 set guifont=Monaco:h 隐藏菜单栏 set guioptio ...

  4. GVIM 设置 vimrc

    set expandtab set nobackup set nosmartindent set noautoindent set ruler au BufRead,BufNewFile *.sv s ...

  5. gVim编辑器 操作篇

    gVim是一款强大的编辑器,可以满足大部分语言的编程需要.尤其是其自带的模板定制功能对于Verilog来说非常受用.然而gVim有很多操作是不同于其他编辑器的,这让很多初学者望而却步,因此,本文将gV ...

  6. spf13配置问题

    git clone https://github.com/spf13/spf13-vim.git tab是黑的色 加入这样一行就可以了set nolist if下的黑边在~/.vimrc里面吧inde ...

  7. windows下的vimrc

    很奇怪的事...不会解释 建议编译位置第一次设置为 map <F9> :call CR()<CR>func! CR()exec "w"exec " ...

  8. Linux命令总结大全,包含所有linux命令

    使用说明:此文档包含所有的Linux命令,只有你想不到的没有你看不到的,此文档共计10万余字,有8400多行,预计阅读时间差不多需要3个小时左右,所以要给大家说一说如何阅读此文档 为了方便大家阅读,我 ...

  9. 设置ISE/vivado中默认文本编辑器为gvim

    ise windows版,添加方式 ISE下点击菜单Edit -> Preferences -> Editor. 在Editor选项框里选择Custom,在Command line syn ...

随机推荐

  1. 传输控制协议(TCP)

    传输控制协议(TCP)[来自Unix网络编程(卷一)第2章] 1.TCP是一个面向连接.可靠性的传输协议: 2.TCP含有用于动态估算客户与服务器之间往返时间(RTT)的算法,以便它知道等待一个确认需 ...

  2. python__高级 : 动态添加 对象属性, 类属性, 对象实例方法, 类静态方法, 类方法

    给对象添加实例属性,可以直接这样  t.age = 18   ( 假设 t = Test() )  给类添加类属性 , 也可以直接这样  Test.age = 18 那给对象添加实例方法,可以在类外面 ...

  3. php扩展开发-常量

    //常量在内核中的结构 typedef struct _zend_constant { zval value; int flags; char *name; uint name_len; int mo ...

  4. iOS-重构微博cell模型

    一.Frame模型: -------------------WeiboFrame.h-------------------------------------------------- ------- ...

  5. Codeforces Round #462 (Div. 2) C DP

    C. A Twisty Movement time limit per test 1 second memory limit per test 256 megabytes input standard ...

  6. 17-比赛1 F - 较小元素 Weak in the Middle (set)

    Seg-El has last chance to make the final changes in order to prevent the destruction of Krypton. He ...

  7. 37-生成 JWT Token

    接到上篇文章 安装扩展插件nuget package方法安装包 使用 ctrl+shift+p打开命令面板 增加这个包,  Microsoft.AspNetCore.Authentication.Jw ...

  8. TouTiao开源项目 分析笔记9 实现一个问答主页面

    1.根据API返回创建几个基础的Bean 1.1.WendaArticleDataBean类 API返回的数据如下: /** * cell_type : 36 * extra : {"wen ...

  9. HTTP的缓存控制

    1.缓存的分类: (1)缓存分为服务端侧(server side,比如 Nginx.Apache)和客户端侧(client side,比如 web browser). (2)服务端缓存又分为 代理服务 ...

  10. javascript数组&省市联动分别用js数组和JSON实现

    1.定义数组的三种方式: **数组可以存放不同的数据类型   第一种: var arr=[1,2,3];   var arr=[1,"2",true];   第二种: 使用内置对象 ...