技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Linux --> 让Vim(gVim)更好的支持python语法缩进(强烈推荐)

让Vim(gVim)更好的支持python语法缩进(强烈推荐)

浏览:6009次  出处信息

    python逐渐成为笔者最常用的语言之一,因此vim对python有些配置的不合理也渐渐显现出来,这次我们先来解决python的缩进问题。

     我们来通过例子来说明,来看一下默认配置下python的缩进情况:

     1.dict的语法缩进

1
2
3
4
val1 = {
        1:"1",
        2:"2"
        }

    2.list的语法缩进

1
2
3
4
5
val2 = [
        1,
        2,
        3
        ]

    3.tuple的语法缩进

1
2
3
4
5
val3 = (
        1,
        2,
        3
        )

    4.函数多行参数的缩进

1
2
3
4
5
def fun(
        a,
        b
        ):
    print a,b

    5.复杂dict中存在):的情况

1
2
3
4
5
6
val4 = {
        (
            1,
            2
            ):1
        }

    很遗憾的发现,这几种常用的写法,默认python缩进都没有完美实现,那么是否有办法优化呢?

     答案是有的,vim.org上提供了一款更好的python缩进插件:

     http://www.vim.org/scripts/script.php?script_id=974

     我们来依次对照一下上面的代码,看新的缩进插件效果怎样:

    1.dict的语法缩进

1
2
3
4
val1 = {
    1:"1",
    2:"2"
}

    2.list的语法缩进

1
2
3
4
5
val2 = [
    1,
    2,
    3
]

    3.tuple的语法缩进

1
2
3
4
5
val3 = (
    1,
    2,
    3
)

    4.函数多行参数的缩进

1
2
3
4
5
def fun(
    a,
    b
):
    print a,b

    5.复杂dict中存在):的情况

1
2
3
4
5
6
val4 = {
    (
        1,
        2
    ):1
}

    除了第4条依然表现诡异,其他的缩进应该是比较完美了~

     OK,重头戏来了,我们去看源码:

     对第117行作出如下修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"Mod-Begin by dantezhu in 2011-02-21 23:38:24
"FROM
"return indent(parlnum)
"TO
"为了支持如下的格式:
"def fun(
"    a,
"    b
"    ):
"    print a,b
"又不影响如下格式:
"val = {
"    (
"        1,
"        2
"    ):1
"}
if match(getline(a:lnum), \')\\s*:\') != -1 && match(getline(parlnum), \'def\\s\\+\') != -1
    return indent(parlnum) + &shiftwidth
else
    return indent(parlnum)
endif
"Mod-End

    OK,再来试一下对第4条的缩进如何:

1
2
3
4
5
def fun(
    a,
    b
    ):
    print a,b

    perfect!,哈哈

    来说一下修改的方法,简单来说就是判断一下当前行是否为 ):,并且其所对应的(所在的行上是否有 def 关键字,如果同时满足这两个条件,则在(所在行的缩进基础上,再向前缩进一个tab。

    提供修改之后的下载链接如下:

     http://www.vim.org/scripts/script.php?script_id=3461

    OK,就到这里,用vim写python的朋友们,快去试试吧!

建议继续学习:

  1. vim几个小技巧(批量替换,列编辑)    (阅读:35669)
  2. 简明Vim练级攻略    (阅读:20494)
  3. Vim下的代码自动补全和代码跳转阅读    (阅读:14194)
  4. 为什么要用 Emacs/Vim,而不是任何其他编辑器    (阅读:11994)
  5. 在vim(gvim)中运行终端(对,你没有看错,我也没有写反)    (阅读:9261)
  6. vim入门,进阶与折腾    (阅读:8999)
  7. 让vim在终端下的配色亮起来!    (阅读:8504)
  8. 最近总结的一些技巧(vim,python,svn,fiddler等)    (阅读:6889)
  9. vim的复制粘贴小结    (阅读:6371)
  10. Vim 中截取部分内容保存到其他文件    (阅读:6252)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
  • 作者:Dante    来源: Vimer
  • 标签: Vim 缩进
  • 发布时间:2011-03-07 22:58:38
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1