FreeTstar

loving Freedom + + loving Linux

  • 首页
  • Archive
  • 关于
  • 杂七杂八
  • 留言板
Twitter Sina RSS

vim中的tab和space

发布于 2012年01月11日 由 freetstar
9 条评论发表评论

常见的tab设置们

一一解说

  1. expandtab|et [off|on]

    默认值为off.当为on时,在插入模式下,按[TAB]键时会以一定数量的[SPACE]键代替。若希望插入真正的 TAB的话,按CTRL-V<Tab>。同时,若autoindent=on,使用[<]和[>]键来缩进,插入的也是一定数量 [SPACE]键。

  2. shiftwidth|sw [数字]

    默认值为8.每次缩进插入的[SPACE]数量.当’cindent’,[>>],[<<],[<],[>]时使用

  3. tabstop|ts [数字]

    默认值为8.文件中的[TAB]键被 当做 [SPACE]键的数目。

  4. smarttab|sta [off|on]

    默认值为off。off时[TAB]键将依据”tabstop”或”softtabstop”插入[SPACE].而”shiftwidth”仅用在 左右平移文本时。 on时,在插入行前按下[TAB]键时将根据’shiftwidth’插入相应的空白符。”tabstop”或’softtabstop’ 此时就用在别处.[BS]键则会删除行首对应‘shiftwidth’数的空白字符

  5. softtabstop|sts [数字]

    默认值为0.在文档编辑操作时,像[BS]键和[TAB]键被:strong:当做 “softtabstop”个[SPACE]键使用. 此给人感觉虽然是[TAB]键被插入了,但实际上是[SPACE]和[TAB]的混合体。[x]键仍然是一个个字符产生作用。

好吧,我怎么知道代码里到底是[SPACE]还是[TAB]

  • list模式可将不可以打印的字符以^代替,如[TAB]和[SPACE]等空白字符,同时每行末添加$

    set list

  • 使用listchars来改变list模式下显示的字符 listchars关于[TAB]的设置默认模板为tab:xy,其中x只显示一次,y则占有剩余的空间

    set listchars=tab:>-,eol:$,同时tab默认占4个空格时,tab就显示为>—,每行末尾显示为$

效果如图:

为了方便,可以添加这个到你的vimrc中,

" 用来打开list功能,显示不可见字符
nmap <leader>l :set list!<CR>
" 设置为>-格式,用$结尾
set listchars=tab:>-,eol:$

我是肿么干的

采用vim推荐的方案之一

2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
   'expandtab'.  This way you will always insert spaces.  The
   formatting will never be messed up when 'tabstop' is changed.

具体设置

set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set smarttab

这种方案下,所有[TAB]键均以softtabstop个[SPACE]键代替,也就是基本上么有[TAB]键会在文档里出现了, 都采用[SPACE]键替代了。

当然,如果不愿意每一种代码都采用这样的配置方式,还可以在~/.vim/ftplugin/下新建python.vim,添入

setlocal tabstop=4
setlocal shiftwidth=4
setlocal expandtab
setlocal softtabstop=4
setlocal smarttab

要是遇到和你喜好不一样的同学怎么办

很多时候大家写代码时对[TAB]和[SPACE]的习惯不一样,有的同学喜欢4个空格代替一个tab,有的同学喜欢到处是 tab,这种情况下,可能有时候遇到像c这种以{}来管理语句块的还好,但是一遇到python这种以缩进来处理语句块 的语言,空格和tab的使用,tab用多少空格来替代不同习惯的影响就很大了

看这个优酷下载的项目时,git://github.com/freetstar/youku-lixian.git,clone下来,gvim youku.py 很简单的做一个print 调试,发现一直提示我语法错误,最终发现原来作者用的占8位的[TAB]做缩进的,那我直接[o] 开启新的一行时,很自然地我的新行是以我自己的设置,即空格做缩进的,自然要报错误

看看python对代码格式的要求吧: http://www.python.org/dev/peps/pep-0008/

Use 4 spaces per indentation level.

For really old code that you don't want to mess up, you can continue to
use 8-space tabs.

Never mix tabs and spaces.

The most popular way of indenting Python is with spaces only.  The
second-most popular way is with tabs only.  Code indented with a mixture
of tabs and spaces should be converted to using spaces exclusively

:( 遇到python缩进不一直的情况怎么办!

解决办法:输入 “:retab”

格式:

[range]ret[ab][!] [new_tabstop]

用法:

配合expandtab设置,将所有[TAB]键用tabstop个的[SPACE]来替代,如果没有指定tabstop值或者等于0,
则使用目前的vim配置中tabstop值

做个好人,告诉vim咱想怎么做

在代码中指定想要的vim设置,如”/* vim: tabstop=8:softtabstop=8:shiftwidth=8:noexpandtab*/”

这样一来,下次无论是谁用vim改动代码时,vim都会自动读取代码中关于vim的配置!

晕了没,其实我也很。。。。。。。。。。。。

  • 这个还是比较形象的,讲vim中tab和space故事的一段视频,

    http://media.vimcasts.org/videos/2/tabs_and_spaces.ogv

  • 复杂的解释

    http://blog.chinaunix.net/space.php?uid=16444831&do=blog&id=2742643

  • vimwiki的介绍

    http://vim.wikia.com/wiki/Converting_tabs_to_spaces

  • 一个关于vim不错的网站,用视频来解释im_.

参考文档: http://tedlogan.com/techblog3.html

http://www.imkeke.net/vim-2/vim-tab-config.html

分类:PROGRAM
新年的转角

9 则回应给 “vim中的tab和space”

  1. richard_ma CHINA Google Chrome Linux 说道:
    2012年01月27日 12:53 上午

    用空格不错,就是往下删的时候费劲。如果对python单独配置的话,可以使用au结合filetype在.vimrc中根据文件类型执行相应的指令。

    [回复]

    freetstar CHINA Mozilla Firefox Linux 回复:
    一月 27th, 2012 at 6:41 下午

    @richard_ma, 设置成空格着实方便。vimwiki上也是说可以配合au肚子设置py和c的。。

    [回复]

    richard_ma CHINA Google Chrome Linux 回复:
    一月 27th, 2012 at 6:49 下午

    @freetstar, 我就是这么干的

    [回复]

  2. Mucid CHINA Mozilla Firefox Ubuntu Linux 说道:
    2012年01月12日 3:48 下午

    每次总是默默的保存为odf
    话说我本地的conf和vps中的conf也是错位。。

    [回复]

    freetstar CHINA Mozilla Firefox Linux 回复:
    一月 13th, 2012 at 10:29 上午

    @Mucid, 什么是odf。

    [回复]

    maplebeats CHINA Google Chrome Ubuntu Linux 回复:
    一月 14th, 2012 at 3:49 下午

    @freetstar, Ooo的格式? :shock:

    [回复]

    freetstar CHINA Mozilla Firefox Linux 回复:
    一月 15th, 2012 at 10:59 上午

    @maplebeats, 好象是。。

    [回复]

  3. Tao Zhu CHINA Mozilla Firefox Linux 说道:
    2012年01月11日 7:59 下午

    说得很对:最好只用空格,这样程序在任何软件、任何电脑、任何显示器上看起来就都一样了

    [回复]

    freetstar CHINA Mozilla Firefox Linux 回复:
    一月 12th, 2012 at 1:16 下午

    @Tao Zhu, 只用空格是个好方案。。

    [回复]

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用 * 标注

*

*


疑问 开心 悲伤 邪恶 惊叹 微笑 脸红 笑 惊讶 惊奇 迷惑 酷 憨笑 生气 阴险 转眼球 眨眼 主意 箭头 中立 哭 大笑

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture.
Anti-spam image

点击取消回复
第 1 页,共 1 页1
  • 欢迎订阅

  • Github

  • 近期评论

    • Dr.Rider CHINA Mozilla Firefox Linux 发表在《中国移动咪咕音乐 Linux版发布》
    • freetstar CHINA Mozilla Firefox Linux 发表在《linux下限制局域网内部使用p2p软件的主机》
    • freetstar CHINA Mozilla Firefox Linux 发表在《ubuntu10.04 安装卸载KDE桌面之折腾记》
    • freetstar CHINA Mozilla Firefox Linux 发表在《linux下限制局域网内部使用p2p软件的主机》
  • Spread Firefox Affiliate Button
  • 我的豆瓣

  • 链接表

    • 51开源社区
    • Adam's
    • delectate's blog
    • Don's
    • Embest工作室
    • fl
    • ghostunix
    • Jasey Wang
    • Jerry's Blog
    • Moolight@Ericyue
    • OSMSG
    • OurUnix
    • panda
    • Pity is the Bomp
    • PT ubuntu
    • Tao Zhu
    • ubuntuhome
    • ubuntusoft
    • WOW!ubuntu
    • zhangzhfang
    • 丕字的blog
    • 傻东の学习笔记
    • 奶牛的blog
    • 孤风颠影
    • 灵亦
    • 熊猫党军委主席
    • 靖 轩
    • 马力哥
    • 黑孩儿
  • 我的支付宝

  • 功能

    • 登录
    • 文章 RSS
    • 评论 RSS
    • WordPress.org
© FreeTstar. WordPress 强力驱动 | Nest Theme by YChong