gpt4 book ai didi

python - VIM python 文件类型特定缩进在一个列表的 50 行后失败

转载 作者:行者123 更新时间:2023-11-28 23:00:55 25 4
gpt4 key购买 nike

我目前正在重新格式化 python 项目以遵循 4 个空格缩进样式。该项目是在 VIM 中使用以下插件完成的:fugitive、snipmate、surround、git、supertab、minibufexpl、command-t。 pyflakes-pathogen、ack、gundo、pydoc、pep8、py.test、makegreen、tasklist、nerdtree、ropevim。

我的 .vimrc 当前是:

set tabstop=4
set shiftwidth=4
set expandtab

let mapleader=","

filetype off

call pathogen#runtime_append_all_bundles()
call pathogen#helptags()


set foldmethod=indent
set foldlevel=99

map <leader>td <Plug>TaskList
map <leader>g :GundoToggle<CR>

syntax on
filetype on
filetype plugin indent on

let g:pyflakes_use_quickfix = 0

let g:pep8_map='<leader>8'

au FileType python set omnifunc=pythoncomplete#Complete
let g:SuperTabDefaultCompletionType = "context"

set completeopt=menuone,longest,preview

该项目不是我的,我希望代码在功能上与原始代码保持不变。

代码由几个赋值操作组成。 each的左边是变量名,右边是一个非常非常长的列表,有多个嵌套列表。

如果我尝试使用 VIM 的重新缩进功能“gg=G”甚至“100==”从赋值开始,VIM 将正确缩进赋值右侧的前 50 行。然而,在右侧的第五十行之后,VIM 开始将第二层缩进额外的四个空格。

animations = [
["stand", 0, amf_client_prediction,
# [3.0, "myanim", 0, 50, arf_cyclic|arf_loop_pos_0_25],
[3.0, "anim_human", 50, 52, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
[3.0, "anim_human", 60, 62, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.75],
[3.0, "anim_human", 70, 72, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
[3.0, "anim_human", 80, 82, arf_use_stand_progress|arf_cyclic|arf_two_handed_blade, 0, (0, 0, 0), 0.5],
## [35.0, "stand_woman", 0, 1059, arf_use_stand_progress|arf_cyclic|arf_two_handed_blade, 0, (0, 0, 0), 0.5],
## [43.0, "stand_woman_public", 0, 1313, arf_use_stand_progress|arf_cyclic|arf_two_handed_blade, 0, (0, 0, 0), 0.5],
# [35.0, "tavern_stand", 0, 472, arf_cyclic|arf_loop_pos_0_25],
],
["stand_man", 0, amf_client_prediction,
[11.0, "stand_man", 0, 315, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],
["stand_player_first_person", 0, amf_client_prediction,
[3.5, "anim_human", 90, 100, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
[3.5, "anim_human", 110, 120, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],
["jump", acf_enforce_lowerbody, amf_priority_jump|amf_play|amf_client_prediction|amf_continue_to_next,
## [1.09, "jump", 22, 48, arf_blend_in_1],
[1.0, "jump", 22, 46, arf_blend_in_1],
## [0.8, "anim_human", 270, 272, arf_blend_in_4],
],
["jump_loop", acf_enforce_lowerbody, amf_priority_jump|amf_play|amf_client_prediction,
## [0.8, "jump_loop", 0, 30, arf_blend_in_2|arf_cyclic],
[0.5, "jump_loop", 0, 14, arf_blend_in_3|arf_cyclic],
],
["jump_end", acf_enforce_lowerbody, amf_priority_jump_end|amf_play|amf_client_prediction,
## [0.1, "jump", 48, 55, arf_blend_in_1],
[0.3, "jump", 48, 55, arf_blend_in_2],
],
["jump_end_hard", acf_enforce_lowerbody, amf_priority_jump_end|amf_play|amf_client_prediction,
## [0.8, "jump_end_hard", 29, 54, arf_blend_in_1],
[0.6, "jump_end_hard", 36, 54, arf_blend_in_1],
],
["stand_unarmed", 0, amf_client_prediction,
[8, "noweapon_cstance", 0, 100, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],
["stand_single", 0, amf_client_prediction,
[9.0, "sword_loop01", 0, 200, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],
["stand_greatsword", 0, amf_client_prediction,
[6.0, "greatsword_cstance", 0, 91, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],
["stand_staff", 0, amf_client_prediction,
[2.0, "staff_cstance", 0, 60, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.0],
],
["stand_crossbow", 0, amf_client_prediction,
[2.0, "staff_cstance", 0, 60, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.0],
],
["turn_right", acf_enforce_lowerbody, amf_play|amf_client_prediction,
[0.95, "stand_man", 0, 30, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25], #TODO
],
["turn_left", acf_enforce_lowerbody, amf_play|amf_client_prediction,
[0.95, "stand_man", 0, 30, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25], #TODO
],
["turn_right_single", acf_enforce_lowerbody, amf_play|amf_client_prediction,
[0.95, "turn_man_onehanded", 0, 23, arf_cyclic|blend_in_walk|arf_make_walk_sound,pack2f(0.4,0.9), (0, 0, 0), 0.0],
],
["turn_left_single", acf_enforce_lowerbody, amf_play|amf_client_prediction,
[0.95, "turn_man_onehanded", 30, 53, arf_cyclic|blend_in_walk|arf_make_walk_sound,pack2f(0.4,0.9), (0, 0, 0), 0.0],
],
["turn_right_staff", acf_enforce_lowerbody, amf_play|amf_client_prediction,
[0.95, "turn_man_staff", 0, 20, arf_cyclic|blend_in_walk|arf_make_walk_sound,pack2f(0.4,0.9), (0, 0, 0), 0.0],
],
["turn_left_staff", acf_enforce_lowerbody, amf_play|amf_client_prediction,
[0.95, "turn_man_staff", 30, 50, arf_cyclic|blend_in_walk|arf_make_walk_sound,pack2f(0.4,0.9), (0, 0, 0), 0.0],
],
["turn_right_greatsword", acf_enforce_lowerbody, amf_play|amf_client_prediction,
[0.95, "turn_man_greatsword", 0, 20, arf_cyclic|blend_in_walk|arf_make_walk_sound,pack2f(0.4,0.9), (0, 0, 0), 0.0],
],
["turn_left_greatsword", acf_enforce_lowerbody, amf_play|amf_client_prediction,
[0.95, "turn_man_greatsword", 30, 50, arf_cyclic|blend_in_walk|arf_make_walk_sound,pack2f(0.4,0.9), (0, 0, 0), 0.0],
],
["prepare_kick_0", acf_enforce_lowerbody, amf_priority_kick|amf_play|amf_client_prediction|amf_continue_to_next,
[0.05, "kick_rightleg", 10, 12, arf_blend_in_3],
],

VIM 是否使用某种缓冲区来设置将跟踪缩进的最大行数?如果是这样,是否有任何方法可以增加此缓冲区大小?

否则,如果这仅仅是内置缩进逻辑的错误,是否存在可以为此类特定情况提供缩进功能的更强大的第三方解决方案?

如果需要更多信息,我会更新。

最佳答案

嗯,在 $VIMRUNTIME/indent/python.vim 中,它看起来像是扫描回过去的 50 行以获取上下文

let s:maxoff = 50        " maximum number of lines to look backwards for ()

你可以通过检查当前缓冲区的 indentexpr 来查看 VIM 正在使用什么缩进

:set indentexpr?   

返回,indentexpr=GetPythonIndent(v:lnum)

当你加载 python 文件时,你的 .vimrc 中的 filetype plugin indent on 就是加载它的原因

关于python - VIM python 文件类型特定缩进在一个列表的 50 行后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11642019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com