emacs python 缩进问题_emacs 缩进

emacs提供一些编码风格,可以使用M-x c-set-style来选择你喜欢的编码风格。

Possible completions are:

awk bsd cc-mode ellemtel gnu java

k&r linux python stroustrup user whitesmith

当你开发c/c++时,上面的这些风格对于,if,while,for所用的大括号的缩进,有点不尽人意。具体来说是下面的样子:

if(...)

{//-----①

...

}

while(...)

{//-----①

...

}

for(...)

{//-----①

...

}

看着非常不爽,我想要下面的样子:

if(...)

{

...

}

while(...)

{

...

}

for(...)

{

...

}

如何解决呢?

步骤1:把光标移动到①处。

步骤2:按ctrl-c ctrl-o(函数:c-set-offset )后,minibuffer的显示如下:

注意:显示的【substatement-open】是函数c-set-offset的第一个参数。

步骤3:按回车后,minibuffer的显示如下:

可以输入数字,特殊字符。特殊字符包括【+, -, ++, --, *,  / 】。

这些特殊字符的含义:指出是变量 c-basic-offset的多少倍。

零:代表和上一行对齐,不继续缩进。所以【{】就和上一行对齐了,达到了我的目的。

n:代表在对齐上一行的基础上,在缩进n个空格。

+:c-basic-offset times 1

-:c-basic-offset times −1

++:c-basic-offset times 2

--:c-basic-offset times −2

*:c-basic-offset times 0.5

/:c-basic-offset times −0.5

步骤4:选中if,for,while区域按TAB。

完成上面4个步骤后,if,while,for所用的大括号的缩进,就和if,while,for对齐。

想让上面的设置永久生效的化,就写如.emacs里。

(add-hook 'c-mode-common-hook

(lambda ()

(c-set-offset 'substatement-open 0)))

另外如果开启了自动换行和饥饿删除功能,配合缩进设置就更好用了。

(add-hook 'c-mode-common-hook

(lambda ()

(c-set-offset 'substatement-open 0)

(c-toggle-auto-hungry-state)));;启动自动换行和饥饿删除功能

最后,当你发现任何地方的缩进不是你想要的,都可以通过调用函数c-set-offset,并指定参数和缩进的值,来实现。当不知道参数是啥的时候,就把光标放到那一行,按ctrl-c ctrl-o后,在minibuffer上显示的名字就是你想要的参数的名字。

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值