vim文件的折叠与展开方式
最近一直在用Vim学习Ruby,但是一直有个问题困扰:
那就是文件无法折叠,但是我记得以前看过Vim的视频,里面见别人用到了折叠与展开。文件比较小时,此功能便无用,但一旦文件量大时,折叠与展开便显得尤为重要了。
折叠的方式有以下几种:
- manual
- indent
- syntax
- marker
- expr
- diff
###1. Manual method
vim默认的折叠方式是此种方式,不需要设置即可。要启用其他方式还得采用:set foldmethod=xxx或者:set fdm=xxx来设置。
使用方法:
v或者V进入visual mode,然后选中要折叠的文字,按zf便可折叠,折叠后按za或者zO便展开。
同时也可以通过zfnj的方式将接下来的n行折叠。类似也有zfnk等;zR则打开所有的折叠。总结下来就是:
- zf => create a fold
- za => unfold
- zf#j => fold down # lines
- zf#k => fold up #lines
- zR => unfold all
###2. Indent method
缩进方式主要是根据代码缩进的方式来折叠/展开代码。要使用缩进方式,则需要做配置,:set foldmethod=indent或者在~/.vimrc中配置:set foldmethod=indent。
其快捷键如下: zM => fold all zR => unfold all za => fold/unfold
###3. Syntax method
采用syntax方式,则只需如下配置即可:
:set fdm=syntax
按键方式与上述相似
###4. Marker method
…Linux活动发起
独乐乐不如众乐乐,独自一人埋头苦学不如一群兴趣相投之人的一起交流。记得以前大一大二时,希望能有一个领路人领着自己学习,帮自己找准学习的方向,毕竟当时太年轻,太多东西不了解,所以不知道软件这行业该学习什么,哪些东西比较有兴趣,一切源于自己接触的太少,身边也没有可交流之人。再加上学校大一大二和大三大四分隔新旧两校区,交流就更少。
正是因为自己的这些经历,然后再加上近来参加西安的rubyist party,促使了我组建Linux小组并且定期举办活动的冲动。一个人的埋头苦学,所见所闻永远局限在某个狭小的空间,只有走出去,与他们交流才能拓宽自己的知识面,提升自己的认知度,也算是多了一些朋友,多了一些交流。正所谓话不投机半句多,与自己志不同道不和的人交流真是有点对牛弹琴的感觉。所以要交流得找兴趣相投志同道合之人。
打算成立的小组规模大致10人左右,无需太多,也不希望有滥竽充数的现象。所以希望小组成员能满足以下条件:
- 对软件感兴趣
- 熟悉Linux(基本操作一般没问题)
- Vim | Emacs
具备以下更佳:
- Git
- Ruby/Python/Lisp/Scala/Prolog
- 个人博客
初期打算:
- 每周一次Party(主要技术交流)
有兴趣的学习请联系我,联系方式:
- 新郎微薄:xautjzd
其他联系方式见我的About
…Ruby中symbol与string的区别
记得当初学习Ruby基本语法时,还为Symbol与String的异同纠结了好久,后来经过一段时间的摸索,大致有了了解,但让我给他人解释,这点我还是办不到。但是今天看到了一篇博文,让我彻底明白他们的区别。
symbol定义
Symbol其实就是string加上前缀:。
二者异同点
其实Symbol与String本质相同,是string 的两种不同呈现方式。由于受SmallTalk影响,Ruby一切皆对象。所以每次给string赋值,name="xautjzd"其实都是在内存中创建一个新对象。每次创建的对象的object_id都不相同。
而symbol则不同,symbol创建一次即可。以后所有的操作都是指向先前创建的对象。所以object_id相同。
不同点大致有三:
- symbol为常量,值不能改变。
- 多次使用同一个symbol,object_id相同,而多次使用string,每个对象有不同的object_id。
- String的方法,eg:#upcase,#split不能用于Symbol。
参考网址
…Vim学习资源
实用的快捷方式
…更换Octopress主题
Octopress博客搭建已经有一阵了,但一直采用的默认的主题,没时间更换。今天特意抽时间来更换下,先上Octopress官网了解了下更换Theme的原理,然后上Octopress所在的源码托管平台GitHub,在其Wiki上找到了第三方Themes,便从前到后大致将各种themes都预览了一遍,最后选择了Greyshade主题,安装方法官网写的已经非常详细,这里再啰嗦一遍:
###Install
$ cd octopress #octopress directory
$ git clone git@github.com:shashankmehta/greyshade.git .themes/greyshade
$ echo "\$greyshade: color;" >> sass/custom/_colors.scss //Substitue 'color' with your highlight color
$ rake "install[greyshade]"
$ rake generate
至此,安装过程便已完成。
左侧的显示效果主要配置在_config.yml文件中。
###pages显示
Octopress默认只有Homepage和Archives两个导航菜单,不满足要求,我便又添加了"编程"、“Linux”、“所思所想”和“关于我”这几个。“关于我”的页面为静态页面,在source/blog/aboutme/下,其他的几个需要将相关的文章显示在相应的导航菜单下,便需做如下配置:
---
layout: category_index
title: Thinking
category: Thinking
---
这样后,只要new_post并且category为Thinking的页面都会集中在所思所想对应的页面显示。
…Linux下截图工具shutter的安装与配置
我一直使用的是Fedora17,自带的截图工具实在不敢恭维,但也就这样断断续续的用着,不过也用的不多。但今天突然鬼使神差的搜了下其他的截图工具,Google搜了下,发现好多提到shutter,既然这么多文章都提到,说明肯定着实不赖,便尝试了下。安装及配置如下:
###1.安装
安装过程很简单,执行下面命令即可:
#yum install shutter
###2.配置
QQ截图快捷键<ctrl>+<alt>+A用习惯了,所以也对shutter继续保留这个快捷键。具体配置方法如下:
在System Tools>System Settings>Keyboard>Shortcuts>Custom Shortcuts中添加了三个快捷键:
截图整个屏幕(shutter -f)
截图当前活动窗口(shutter -a)
截图选定区域(shutter -s)
具体配置及对应的快捷键设置参考下图:

安装Powerline过程中的收获
Powerline插件已经多次耳闻目见,但是一直没做尝试,今天再次看到便忍不住试了下,结果还没成功。可能是由于字体的原因吧,在找答案的过程中邂逅了airline,据说比powerline加载更快,而且还无需安装字体。所以便果断地换为airline。只需在vimrc中加入bundle bling/vim-airline即可。当然前提是在~/.vimrc中已有如下配置:
set laststatus=2 "Always show the status line
set noshowmode
set t_Co=256
配置好后效果如下图所示:

配置好后,在bash中显示没问题,但是在tmux中显示就有问题了,先前配置的效果无法显示。网上也找了好久答案,才得以解决,方法如下:
1.$vim ~/.tmux.conf
在~/.tmux.conf文件中添加如下代码:
set -g default-terminal "screen-256color"
2.$vim ~/.bashrc
在~/.bashrc中添加如下代码:
alias tmux="tmux -2"
tmux -2是强制tmux的终端支持256种颜色。
配置好后,显示没问题,但是在写博客的过程中发现vim突然不能输入中文了,不知为何。最后在~/.vimrc添加: set guifont=* 就顺利解决,不过原因待深究,要学的东西太多。
…户县之行
前天应阿亮之邀,去了趟少春家,现将所见所闻予以记录,聊以慰藉。
我们三(阿亮,少春和我)于前天下午将近六点出发去户县甘河镇的少春家,大致七点半左右到。到家时,天刚暗下来。从这一刻开始到今天下午,差不多有两天的时间体验了下陕西乡村的风土人情,而体验的最佳方式则是通过味觉和视觉。
首先,从味觉方面说,大致品尝了他家的臊子面,煎饼和yuyu(只知其音,不知其写法,也念he’r)。以前只是听陕西的同学说过他们的习俗:早晚稀饭,中午吃面,而且稀饭比较稀,上面几乎看不到米粒,碗底才有。经此一见,果不其然。不过他们煮稀饭的米和我家乡不同,第一次见识到糯米也可用于煮稀饭,以前我只知:糯米用于蒸糯米饭、做汤圆和糍粑。中午吃的是臊子面,而臊子面的核心在于臊子。阿姨做的臊子挺不错,味道很好,唯一不足的是醋放的有点多,略酸,不过不太影响总体的感觉,至少比食堂阿姨做的强好几倍。盛面的家伙很给力,直接上脸盆。碗也给力,平时在食堂吃一碗足已,但这两天都是至少吃一碗。少春则更给力,今天中午直接吃了四碗。昨晚吃的是煎饼,和我家乡的饼有点像,只是做法不同,厚薄不同,但是不得不说味道比我家乡的那个饼味道略好,这得益于我喜欢吃薄饼,而我家乡的那饼则略显厚。
…终端分屏工具tmux的安装与常用操作
##1. tmux简介
tmux是terminal multiplexer的简称,是一款终端分屏的工具,可以在同一屏幕中划分出多个独立的shell环境,这样便于对比,唯一的缺陷是窗口比较小而已。一个server可以有多个session,一个session可以有多个windows,一个windows可以有多个pane.具体见官网介绍。
##2. 安装
采用相应系统的包管理器即可安装。我装的是fedora,现以fedora为例:
#yum install tmux
包不到1M大小,很快便安装完成。
…Vim的代码自动补齐插件——UltiSnips
暑假时间充足,便又开始学习自己喜欢的Ruby。而学Ruby的最佳环境是Mac,其次是Linux,最次是Windows。Mac买不起,只能在Linux上折腾了,一台台式机装的Fedora17,自己的本是xp系统,装了不少微软的一套东西,毕竟教研室的项目都是在.net环境下进行的,不敢轻易换系统,所以便在本上装了个VirtualBox虚拟机,虚拟了一个Ubuntu。上面也配好了Ruby环境,毕竟本方便,带到哪里都可以学,但平时的Linux编程都是在台式机下,毕竟性能比虚拟机好。
而学习Ruby一般都是在Vim/Emacs/SublimeText 2下,RubyMine貌似很适合开发Ruby,由于是商业产品,没钱购买也就舍弃了,毅然决然的选择了Vim.都说高手使用的是Vim,想必必有可取之处。但是Vim的学习路线比较陡峭,开始是一段痛苦期,经过一段时间的摧残后,甜蜜的时光便来临了,各种强大而高效的插件让你目瞪口呆,顿时感觉其他IDE都蒻爆了。幸好我以前对Vim的基本操作便有了了解,所以再次学习起来便不那么痛苦,甚至不想回到Windows环境,不想再用其他的Editor。我现在用的插件并且给我印象深刻的大致有这么一些:Vundle,Ctrlp/command-T,UltiSnips/Snipmate,YouCompleteMe/SuperTab,NerdTree,Tagbar,FuzzyFinder,vim-rails,Markdown等。
…