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

python逐渐成为笔者最常用的语言之一,因此vim对python有些配置的不合理也渐渐显现出来,这次我们先来解决python的缩进问题。 我们来通过例子来说明,来看一下默认配置下python的缩进情况:

1.dict的语法缩进

val1 = {

1:"1",

2:"2"

}

2.list的语法缩进

val2 = [

1,

2,

3

]

3.tuple的语法缩进

val3 = (

1,

2,

3

)

4.函数多行参数的缩进

def fun(

a,

b

):

print a,b

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

val4 = {

(

1,

2

):1

}

很遗憾的发现,这几种常用的写法,默认python缩进都没有完美实现,那么是否有办法优化呢? 答案是有的,vim.org上提供了一款更好的python缩进插件: http://www.vim.org/scripts/script.php?script_id=974

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

1.dict的语法缩进

val1 = {

1:"1",

2:"2"

}

2.list的语法缩进

val2 = [

1,

2,

3

]

3.tuple的语法缩进

val3 = (

1,

2,

3

)

4.函数多行参数的缩进

def fun(

a,

b

):

print a,b

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

val4 = {

(

1,

2

):1

}

除了第4条依然表现诡异,其他的缩进应该是比较完美了~ OK,重头戏来了,我们去看源码: 对第117行作出如下修改:

"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条的缩进如何:

def fun(

a,

b

):

print a,b

perfect!,哈哈 来说一下修改的方法,简单来说就是判断一下当前行是否为 ):,并且其所对应的(所在的行上是否有 def 关键字,如果同时满足这两个条件,则在(所在行的缩进基础上,再向前缩进一个tab。 提供修改之后的下载链接如下: http://www.vim.org/scripts/script.php?script_id=3461

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值