一、配置终端

solarized http://ethanschoonover.com/solarized

简单配置脚本:

#!/bin/sh

git clone git://github.com/altercation/solarized.git
cd solarized
osname=$(uname -s); case $osname in
"Darwin" )
echo $osname
cd osx-terminal.app-colors-solarized
./"Solarized Dark ansi.terminal"
;;
"Linux" )
echo $osname
;;
esac

官网有比较详细介绍。

二、配置vim

vundle https://github.com/gmarik/vundle

这是个vim插件管理神器,有了它可以方便安装各种插件

我的配置文件:

set nocompatible              " be iMproved
filetype off " required! set rtp+=~/.vim/bundle/vundle/
call vundle#rc() " let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle' " My bundles here:
"
" original repos on GitHub
Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'tpope/vim-rails.git'
" vim-scripts repos
Bundle 'L9'
Bundle 'FuzzyFinder'
Bundle 'Solarized' " non-GitHub repos
Bundle 'git://git.wincent.com/command-t.git'
" Git repos on your local machine (i.e. when working on your own plugin)
"Bundle 'file:///Users/gmarik/path/to/plugin'
" ... filetype plugin indent on " required!
"
" Brief help
" :BundleList - list configured bundles
" :BundleInstall(!) - install (update) bundles
" :BundleSearch(!) foo - search (or refresh cache first) for foo
" :BundleClean(!) - confirm (or auto-approve) removal of unused bundles
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle commands are not allowed.
" set nu
syntax enable
set hlsearch
set showmode
set ruler
set tabstop=
set shiftwidth=
set encoding=utf- set background=dark
colorscheme solarized

一篇比较详细的文章

Git时代的VIM不完全使用教程-->http://beiyuu.com/git-vim-tutorial/

最近整理了VIM的配置,换上插件管理的神器-----Vundle,由他引发的VIM生态环境的改善,堪称完美。遂打算写一份简单的教程,分享Git时代VIM新世界的美丽动人之处。对VIM有基础的同学,可直接跳至插件管理部分。

VIM的模式

第一次使用VIM,会觉得无所适从,他并不像记事本,你敲什么键就显示什么,理解VIM的需要明白他的两种模式: - 命令模式 (Command Mode) - 编辑模式 (Insert Mode)

命令模式下,可以做移动、编辑操作;编辑模式则用来输入。键入i,o,s,a等即可进入编辑模式,后面解释原因。

模式的设计是VIM和其他编辑器最不同的地方,优势和劣势也全基于此而生。

基本操作

以下介绍的键盘操作,都是大小写敏感的,并且要在命令模式下完成,需注意:

以字为单位的移动

  • h 向左移动一个字
  • j 向下移动一行
  • k 向上
  • l 向右

这四个键在右手最容易碰到几个位置,最为常用。

以词为单位的移动

  • w 下一個word w(ord)
  • W 下一個word(跳过标点)
  • b 前一個word b(ackward)
  • B 前一个word(跳过标点)
  • e 跳到当前word的尾端 e(nd)

行移动

  • 0 跳到当前行的开头
  • ^ 跳到当前行第一个非空字符
  • $ 跳到行尾

助记:0(第0个字符),^$含义同正则表达式

段落移动

  • { 上一段(以空白行分隔)
  • } 下一段(以空白行分隔)
  • % 跳到当前对应的括号上(适用各种配对符号)

跳跃移动

  • /xxxx 搜索xxxx,然后可以用n下一个,N上一个移动
  • # 向前搜索光标当前所在的字
  • * 向后搜索光标当前所在的字
  • fx 在当前行移动到光标之后第一个字符x的位置 f(ind)x
  • gd 跳到光标所在位置词(word)的定义位置 g(o)d(efine)
  • gg 到文档顶部
  • G 到文档底部
  • :x 跳到第x行(x是行号)
  • ctrl+d 向下翻页 d(down)
  • ctrl+u 向上翻页 u(p)

基本编辑

修改

  • i 在光标当前位置向前插入 i(nsert)
  • I 在本行第一个字符前插入
  • a 在光标当前位置向后插入 a(fter)
  • A 在本行末尾插入
  • o 向下插入一行
  • O 向上插入一行
  • :w 保存
  • :q 退出
  • :wq 保存并退出

删除

  • x 删除当前字符
  • dd 删除当前行 d(elete)
  • dw 删除当前光标下的词 d(elete)w(ord)

复制粘贴

  • yy 复制当前行 y(ank)
  • yw 复制当前光标下的词 y(ank)w(ord)
  • p 粘贴 p(aste)
  • P 粘贴在当前位置之前

进阶操作

限于篇幅,在这里我仅介绍下我非常常用的几个操作。

重复操作

因为VIM所有的操作都是原子化的,所以把这些操作程序化就非常简单了:

  • 5w 相当于按五次w键;
  • 6j 下移6行,相当于按六次j;
  • 3J 大写J,本来是将下一行与当前行合并,加上数量,就是重复操作3次;
  • 6dwd6w 结果是一样,就是删除6个word;
  • 剩下的无数情况,自己类推吧。

高效编辑

  • di" 光标在""之间,则删除""之间的内容
  • yi( 光标在()之间,则复制()之间的内容
  • vi[ 光标在[]之间,则选中[]之间的内容
  • 以上三种可以自由组合搭配,效率奇高,i(nner)
  • dtx 删除字符直到遇见光标之后的第一个x字符
  • ytx 复制字符直到遇见光标之后的第一个x字符

标记和宏(macro)

  • ma 将当前位置标记为a,26个字母均可做标记,mbmc等等;
  • 'a 跳转到a标记的位置;
  • 这是一组很好的文档内标记方法,在文档中跳跃编辑时很有用;
  • qa 将之后的所有键盘操作录制下来,直到再次在命令模式按下q,并存储在a中;
  • @a 执行刚刚记录在a里面的键盘操作;
  • @@ 执行上一次的macro操作;
  • 宏操作是VIM最为神奇的操作之一,需要慢慢体会其强大之处;

VIM的基本操作,可以挖掘的东西非常多,不仅仅需要记忆,更需要自己去探索总结,熟练之后,效率会大幅度提升。后面会给出一些参考链接。

插件管理

Vundle

终于到这篇Blog我最想讨论的部分了。VIM的强大不仅仅体现在操作的高效率,更有强大而充沛的插件做支援,插件丰富了之后,就面临查找和管理的问题。

在遇见Vundle之前,我用Pathogen管理插件。Pathogen还算方便,只需要把相应插件,放在bundle目录下即可,不需要再像以前那样逐个放置单独的文件到相应目录,大大节省了劳动力,管理起来也一目了然,觉得还不错,至少比vimball那种需要执行命令安装的方式好一些。

我真希望我早些遇见Vundle。Vundle受到Pathogen和Vimball的启发,于是有了现在的模样。Vundle的逻辑是这样的:

  • Vim Script选好你想要的插件;
  • 在VIM的配置文件中写一句 Bundle plugin_name
  • 执行一下Vundle的初始化命令,插件就装好了;
  • 升级和卸载也是同样的简单;

完美的世界!

Vundle的配置

Vundle的安装很简单:

  1. git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

然后写配置文件.vimrc

  1. set nocompatible " be iMproved
  2. filetype off " required!
  3. set rtp+=~/.vim/bundle/vundle/
  4. call vundle#rc()
  5. " let Vundle manage Vundle
  6. " required!
  7. Bundle'gmarik/vundle'
  8. " vim-scripts repos
  9. Bundle 'vim-plugin-foo'
  10. Bundle 'vim-plugin-bar'
  11. filetype plugin indent on " required!

其中Bundle后面的内容,就是插件的名字,插件维护在Vim-Script.org

然后,打开VIM之后,可以输入以下命令:

  1. "安装插件:
  2. :BundleInstall
  3. "更新插件:
  4. :BundleInstall!
  5. "卸载不在列表中的插件:
  6. :BundleClean

现在大部分的插件都已经从Vim.org迁移到了Vim-Script.org,而且很多作者也认领了自己的插件,直接在这个Github的项目下更新,一个比Vim.org更科学更有效的生态环境,就这样完美的形成了。

在此非常严重的感谢vim-scripts.org的创建者Scott Bronson,和Vundle的作者gmarik。他们的创新和分享精神,让这个世界又美好了一些。

也感谢业界良心Github。Vim-Scripts.org整站就是用Github Pages建立维护的,对于个人来说,这是很好的选择,有兴趣的同学可以参看我之前的博客:使用Github Pages建独立博客

插件介绍

有了Vundle,再装插件就是件享受的事情了。我常用的插件有:

  1. #相较于Command-T等查找文件的插件,ctrlp.vim最大的好处在于没有依赖,干净利落
  2. Bundle'ctrlp.vim'
  3. #在输入(),""等需要配对的符号时,自动帮你补全剩余半个
  4. Bundle'AutoClose'
  5. #神级插件,ZenCoding可以让你以一种神奇而无比爽快的感觉写HTML、CSS
  6. Bundle'ZenCoding.vim'
  7. #在()、""、甚至HTML标签之间快速跳转;
  8. Bundle'matchit.zip'
  9. #显示行末的空格;
  10. Bundle'ShowTrailingWhitespace'
  11. #JS代码格式化插件;
  12. Bundle'_jsbeautify'
  13. #用全新的方式在文档中高效的移动光标,革命性的突破
  14. Bundle'EasyMotion'
  15. #自动识别文件编码;
  16. Bundle'FencView.vim'
  17. #必不可少,在VIM的编辑窗口树状显示文件目录
  18. Bundle'The-NERD-tree'
  19. #NERD出品的快速给代码加注释插件,选中,`ctrl+h`即可注释多种语言代码;
  20. Bundle'The-NERD-Commenter'
  21. #解放生产力的神器,简单配置,就可以按照自己的风格快速输入大段代码。
  22. Bundle'UltiSnips'
  23. #让代码更加易于纵向排版,以=或,符号对齐
  24. Bundle'Tabular'
  25. #迄今位置最好的自动VIM自动补全插件了吧
  26. #Vundle的这个写法,是直接取该插件在Github上的repo
  27. Bundle'Valloric/YouCompleteMe'

以上插件可以在vim-script.org找到源码和文档,ZenCodingEasyMotion演示点链接,你会心动的。

.vimrc配置

因为配置不断在更新,所以放上我的配置的链接:.vimrc配置

更多

VIM在一开始会觉得非常不习惯,一定要坚持下去,收获的会更多,不仅仅是在装大侠方面的哦~

关于VIM的使用,这篇博客仅仅介绍了很小的一部分,网络上还有大量朋友总结的心得,常学常有收获:

mac系统终端的color scheme配置和vim配置的更多相关文章

  1. mac系统终端sudo免输入密码技能get

    1.需要在/etc/sudoers中配置. 这个文件的权限是r/r/n,配置之前需要加写权限. sudo chmod u-w /etc/sudoers 2.打开命令窗口sudo visudo 或者 s ...

  2. mac系统上访问docker容器中的ip配置

    使用 mac系统,发现docker没有 docker0网桥,无法直接在宿主机上 访问 容器的ip, 在测试的时候有这种需求,而不是通过-p的方式,可以参考下面的连接,主要就是 修改 setting.j ...

  3. Mac系统终端命令行不执行命令 总出现command not found解决方法

    配置过安卓开发环境,改过bash_profile这个文件,最后不知怎么的只有cd命令能执行,我猜测可能修改bash_profile文件后没有保存 导致的     保存命令是:  source .bas ...

  4. Mac系统搭建Go语言Sublime Text 2环境配置

    Go语言是谷歌自家的编译型语言,旨在不损失性能的前提下降低代码复杂率.其优势是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦. 一.安装Golang的SDK 在官网http: ...

  5. [转] Mac系统终端命令行不执行命令 总出现command not found解决方法

    配置过安卓开发环境,改过bash_profile这个文件,最后不知怎么的只有cd命令能执行,我猜测可能修改bash_profile文件后没有保存 导致的     保存命令是: source .bash ...

  6. mac系统终端sudo免输入密码

    p.p1 { margin: 0; font: 12px ".PingFang SC" } p.p2 { margin: 0; font: 12px "Helvetica ...

  7. mac系统终端下忽略大小写 与 git自动补全(git auto completion)

    1.下载git-completion.bash 并放到home 目录下: curl https://raw.githubusercontent.com/git/git/master/contrib/c ...

  8. Mac系统打开命令行终端及查看操作系统版本号的方法

    Mac系统打开命令行终端的方法: 应用程序 --> 实用工具 --> 终端 Mac系统终端查看操作系统版本号的方法: 输入:#more /System/Library/CoreServic ...

  9. 在Mac系统上配置Android真机调试环境

    在Mac系统上配置Android真机调试环境 mac上配置安卓环境还说挺方便的,真机调试也比win上要好一些.win上被各种软件强行安装了xxx助手. 在mac上就了一个干净的感觉. 下载Androi ...

随机推荐

  1. [转]TEC1401.Report开发技术总结 - 第三章 使用Oracle Reports开发报表-创建一个分组报表(2/4)

    本文转自:http://blog.csdn.net/deepsea_allen/article/details/53900284 第三章   创建一个分组报表 1.     建立数据模型 数据模型用于 ...

  2. RabbitMQ---4、消息确认Ack

    一:消费者确认 消费者确认或者说消费者应答指的是RabbitMQ需要确认消息到底有没有被收到 - 自动应答 boolean autoAck = true; channel.basicConsume(Q ...

  3. Vue2.0实现ie的兼容

    转自:https://blog.csdn.net/landl_ww/article/details/79149461 1.解决方案:安装 "babel-polyfill" ,加配置 ...

  4. 十五、读写锁ReentrantReadWriteLock

    一.简介 有时候我们对资源的修改操作非常地少,但是读取的频率却很高.如果采用一般的互斥锁,那么大量的读取操作也需要做等待.基于读写分离的思想,我们可以使用JDK的读写锁来处理这种情况. 1)读读不互斥 ...

  5. 撩课-Java每天5道面试题第15天

    撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单 ...

  6. HTTP的response code 1xx,2xx,3xx,4xx,5xx分别代表什么

    HTTP 状态码点击链接可了解详情.您也可以访问 HTTP 状态码上的 W3C 页获取更多信息. 1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态码. 2xx (成功):表示成功处理了请 ...

  7. 基于easyUI实现经典系统主界面

    此文章是基于 EasyUI+Knockout实现经典表单的查看.编辑 一. 相关文件介绍 1. home.jsp:系统主界面 <!DOCTYPE html PUBLIC "-//W3C ...

  8. git杂记-打标签

    列出标签 $ git tag v0. v1. 创建标签 --添加附注标签(推荐):加上-a选项(annotated) $ git tag -a v1. -m 'my version 1.4' --添加 ...

  9. [Code+#4]最短路

    考虑xor运算的自反性 我们可以直接枚举二进制位异或来进行转移 这样边数大约是\(n \log n\)级别的 总复杂度\(\Theta((n\log n+m)\log n)\) #include&qu ...

  10. BZOJ1996 [Hnoi2010] 合唱队

    Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT Solution 令$f_{i,j}$ ...