我目前正在重新格式化一个 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
该项目不是我的,我想保持代码在功能上与原始代码保持不变。
该代码由一些赋值操作组成。每个的左侧是变量名,右侧是一个非常非常长的列表,其中包含多个嵌套列表。
如果我尝试使用 VIM 的重新缩进功能 "gg=G" 甚至 "100==" 从分配开始,VIM 将正确缩进分配右侧的前 50 行。然而,在右侧第 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 是否使用某种缓冲区来设置将跟踪缩进的最大行数?如果是这样,有没有办法增加这个缓冲区的大小?
否则,如果这仅仅是内置缩进逻辑的错误,是否存在更强大的第三方解决方案可以为这种特定情况提供缩进功能?
如果需要更多信息,我会更新。