加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何修复Vim在Python中长行的换行行为?

发布时间:2020-12-16 01:18:56 所属栏目:安全 来源:网络整理
导读:所以这是我的问题.假设我有一个 Python文件,我输入的行很长,就像最后一行一样: class SomeClass(object): def some_method(self): some_variable = SomeOtherClass.some_other_method(some_parameter=some_value) 当我在Vim中键入它时,会发生这种情况: cla
所以这是我的问题.假设我有一个 Python文件,我输入的行很长,就像最后一行一样:
class SomeClass(object):
  def some_method(self):
    some_variable = SomeOtherClass.some_other_method(some_parameter=some_value)

当我在Vim中键入它时,会发生这种情况:

class SomeClass(object):
  def some_method(self):
    some_variable =
    SomeOtherClass.some_other_method(some_parameter=some_value)

这不仅仅是糟糕的风格,它打破了PEP8.我想要发生的是:

class SomeClass(object):
  def some_method(self):
    some_variable = SomeOtherClass.some_other_method(
        some_parameter=some_value)

这与PEP8一致.(为了讨论的目的,我只对换行行为感兴趣,而不是缩进行为.)

编辑:breakat仅与换行符一起使用以控制行的显示方式.它(显然)不与textwidth结合使用来确定插入硬换行符的位置.所以下面我的想法是行不通的……

令人惊讶的是,我没有发现任何迹象表明其他人分享了这个问题,这让我觉得我做错了什么.然而,我的想法是添加(字符到breakat设置(以及[和{我在它时).

我试过这个;这是输出:set breakat:

breakat= ^I!@*-+;:,./?([{

然而,这无济于事.无论我做什么,Vim坚持在上面的“=”之后打破.我也有同样的问题,长函数名称,它会在def之后立即中断.

以下是我的.vimrc的完整内容:

set nobackup
set nowritebackup
set noswapfile
set columns=80
set tabstop=4
set shiftwidth=4
set softtabstop=4
set autoindent
set smarttab
set smartindent
set textwidth=80
set wrap
set breakat= ^I!@*-+;:,./?([{
filetype indent on
filetype on
filetype plugin on

(我没有安装插件等,试图解决这个问题.)

有没有人知道如何让Vim服从我的破坏设置,或任何其他关于处理这种行为的最佳方法的想法?

你没有设置换行符.没有它,vim会忽略breakat变量.有关详细信息,请参阅 here,以及许多vim善良.另请注意,您需要设置nolist,因为它会断开换行符.

另一篇关于自动换行的博客文章here.这篇文章指出一些文件类型不会自动包含格式选项“t”标志.没有它,不会发生自动换行.

我认为最简单的方法是添加一个映射来运行:%! pythonTidy. pythonTidy是python中的一个脚本,用于在stdIn上获取python代码并输出漂亮的版本到stdOut.使用该映射,它将允许您在当前文件上运行它,并用重新格式化的版本替换整个内容.每当退出python文件中的插入模式时,添加一个自动命令来运行它,你应该设置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读