以下是我的问题。假设我有一个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
仅在与linebreak
结合使用时才起作用,以控制如何显示行。它似乎不能与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遵守我的breakat设置吗?或者有其他的想法来处理这种行为吗?