ฉันไม่รู้ว่าวิธีใดดีที่สุดในการจัดการตัวย่อมากกว่า 500 ตัว อาจเป็นในระยะยาวตามที่ @statox อธิบายคุณอาจดูตัวอย่างเพื่อลดจำนวนนี้
และหากคุณต้องการตัวย่อให้สมบูรณ์โดยอัตโนมัติคุณสามารถลองใช้รหัสต่อไปนี้:
augroup GetAbbrev
    autocmd!
    autocmd VimEnter * let s:abbrev_list = [] |
                \ call substitute(join(readfile($MYVIMRC), "\n"), '\v%(^|\n)\s*i?%(nore)?ab%[brev]\s+%(%(\<expr\>|\<buffer\>)\s+){,2}(\k+)', '\=add(s:abbrev_list, submatch(1))', 'gn')
augroup END
set completefunc=CompleteAbbrev
function! CompleteAbbrev(findstart, base)
    if a:findstart
        return searchpos('\<\k', 'bcnW', line('.'))[1] - 1
    else
        return filter(copy(s:abbrev_list), 'v:val =~ "^" . a:base')
    endif
endfunction
หากต้องการใช้งานคุณจะต้องกดC-x C-uหลังจากเริ่มต้นตัวย่อ
autocmd ตั้งค่าตัวแปรs:abbrev_listซึ่งควรมีตัวย่อทั้งหมดของคุณ
ฟังก์ชั่นCompleteAbbrev()ควรกลับรายการของผู้สมัครตามคำก่อนเคอร์เซอร์
ค่าตัวเลือกที่บอกเป็นกลุ่มที่ฟังก์ชั่นที่จะเรียกเมื่อคุณกด'completefunc' 
โปรดทราบว่าตัวเลือกนั้นเป็นของท้องถิ่นสำหรับบัฟเฟอร์ดังนั้นคุณยังคงสามารถใช้ฟังก์ชั่นอื่น ๆ ในรูปแบบของบัฟเฟอร์ที่แตกต่างกันโดยใช้ autocmd และเหตุการณ์ตัวอย่างC-x C-u
FileType
ดู:h complete-functionsข้อมูลเพิ่มเติมเกี่ยวกับการทำงานของฟังก์ชัน
อีกวิธีคือการใช้คำพ้องความหมายให้สมบูรณ์ จาก:h i_^x^t:
                            *i_CTRL-X_CTRL-T*
CTRL-X CTRL-T       Works as CTRL-X CTRL-K, but in a special way.  It uses
                    the 'thesaurus' option instead of 'dictionary'.  If a
                    match is found in the thesaurus file, all the
                    remaining words on the same line are included as
                    matches, even though they don't complete the word.
                    Thus a word can be completely replaced.
                    For an example, imagine the 'thesaurus' file has a
                    line like this:
                            angry furious mad enraged
                    Placing the cursor after the letters "ang" and typing
                    CTRL-X CTRL-T would complete the word "angry";
                    subsequent presses would change the word to "furious",
                    "mad" etc.
                    Other uses include translation between two languages,
                    or grouping API functions by keyword.
ในการใช้โซลูชันนี้คุณต้องทำ 3 สิ่ง:
- เขียน{lhs}ตัวย่อทั้งหมดของคุณลงในไฟล์เฉพาะ
 ตัวอย่างเช่น/home/user/mysynonyms.txt. และจัดกลุ่มตามธีมที่คล้ายกัน
- เพิ่มพา ธ ไปยังไฟล์นี้ไปยังตัวเลือก- 'thesaurus':
 - set thesaurus+=/home/user/mysynonyms.txt
 
- ตี- C-x C-tหลังจากเริ่มต้นชื่อตัวย่อใด ๆ ภายในกลุ่ม
 
ตัวอย่างเช่นสมมติว่าคุณมีตัวย่อดังต่อไปนี้:
iab cfa CFuncA
iab cfb CFuncB
iab cfc CFuncC
iab jfa JavaFuncA
iab jfb JavaFuncB
iab jfc JavaFuncC
iab pfa PhpFuncA
iab pfb PhpFuncB
iab pfc PhpFuncC
คุณสามารถจัดกลุ่มตามภาษาการเขียนโปรแกรมที่เป็นของพวกเขา 
ข้างใน/home/user/mysynonyms.txtคุณจะเขียน:
cpp cfa cfb cfc
php pfa pfb pfc
java jfa jfb jfc
ตอนนี้เมื่อใดก็ตามที่คุณกดC-x C-tชื่อตัวย่อ (หรือเพียงแค่เริ่มต้น), กลุ่มที่จะแสดงในเมนูป๊อปอัพตัวย่อทั้งหมดที่อยู่ในบรรทัดเดียวกัน
นี่คือลักษณะ:

โปรดทราบว่าตัวย่อไม่จำเป็นต้องเริ่มต้นด้วยตัวอักษรเดียวกันเพื่อจัดกลุ่มซึ่งอาจแตกต่างกันโดยสิ้นเชิง ตราบใดที่พวกเขาอยู่ในบรรทัดเดียวกันในไฟล์คำพ้องความหมายของคุณ Vim จะแสดงพวกเขาทั้งหมด  
และคุณไม่จำเป็นต้องใช้ภาษาการเขียนโปรแกรมเพื่อตัดสินใจว่ากลุ่มใดจะใช้ตัวย่อ คุณสามารถจัดกลุ่มตามความคล้ายคลึง / หัวข้อ / หมวดหมู่ที่มีความหมายที่คุณมีอยู่ในใจ
ดังนั้นเมื่อคุณลืมตัวย่อที่เฉพาะเจาะจงคุณสามารถพิมพ์ตัวอักษรตัวแรกของหมวดหมู่กดC-x C-tและเลือกตัวอักษรที่เกี่ยวข้องภายในเมนู
แก้ไข: 
การถ่ายโอนคำย่อทั้งหมดของคุณภายใน/home/user/mysynonyms.txtคุณสามารถใช้คำสั่ง 3 Ex เหล่านี้:
:let abbrev_list = []
:call substitute(join(readfile($MYVIMRC), "\n"), '\v%(^|\n)\s*i?%(nore)?ab%[brev]\s+%(%(\<expr\>|\<buffer\>)\s+){,2}(\k+)', '\=add(abbrev_list, submatch(1))', 'gn')
:call writefile(abbrev_list, '/home/user/mysynonyms.txt')
แก้ไข 2: 
ฉันได้เพิ่มการตั้งค่าสถานะnเมื่อsubstitute()มีเรียกฟังก์ชันเนื่องจากคุณไม่ต้องการทดแทน มีวัตถุประสงค์เพียงอย่างเดียวคือการเพิ่มตัวย่อภายในรายการเมื่อพบ 
แต่เนื่องจากคุณมีตัวย่อหลายอย่างมันอาจทำให้กระบวนการช้าลงอย่างไร้ประโยชน์ฉันไม่รู้ เริ่มแรกฉันไม่ได้ใส่เพราะฉันไม่รู้เวอร์ชั่น Vim ที่คุณใช้ หากรุ่นของคุณใหม่กว่า7.3.627ควรเป็นอย่างนั้นมิฉะนั้นคุณจะต้องลบการnตั้งค่าสถานะ