VIM تسليط الضوء على الكلمات الفريدة في المخزن المؤقت؟

عند استخدام vim للبرمجة ، من المرجح تماماً أن تكون أي كلمة فريدة في الملف/المخزن المؤقت عبارة عن خطأ مطبعي (من اسم متغير إيثر أو اسم أسلوب أو بنية لغة). وبالتالي ستكون طريقة رائعة للقبض على هذه الأخطاء المطبعية مع القدرة على تمييز أي كلمات فريدة في الملف ، دون أي تحليل لغوي أو تحليل لغوي أو الحاجة إلى معرفة لغة البرمجة المستخدمة. بالطبع سيكون من الأفضل أن يحدث ذلك أثناء الكتابة حتى تتمكن من رؤية الأخطاء المطبعية على الفور. بطريقة ما ، أنا لا أفهم أنني أول من توصل إلى هذه الفكرة ، ربما شخص ما لديه مثل هذا الإعداد أو لديه أي اقتراحات؟

4
ربما ، أنت أول من طرح مثل هذه الفكرة. :)
وأضاف المؤلف kev, مصدر
لا أعتقد أنه سيكون سلالة ، لأن شفرة المصدر دائما تقريبا معظم الكلمات المتكررة أكثر من مرة ، على الأقل لملفات كبيرة.
وأضاف المؤلف morphles, مصدر
أشعر أن هذا سيكون بمثابة جحيم للضغط على العيون. هل ألقيت نظرة على ctags ، أو باستخدام linter؟ (على سبيل المثال ، pflakes سيبرز/يسلط الضوء على متغير غير موجود لشفرة Python) .
وأضاف المؤلف David Cain, مصدر
بالتأكيد ، ولكن إذا كان هدفك هو تحديد كلمات غير محددة ، فأعتقد أن لديك طريقة خاطئة. هناك الكثير من الأدوات هناك لتسليط الضوء على كلمات غير محددة.
وأضاف المؤلف David Cain, مصدر

1 إجابة

فكرة مبدعة.

لقد قمت بعمل بعض النماذج الأولية السريعة باستخدام مقتطف Vimscript:

let stat = {}
for ii in range(1, line('$'))
    for word in split(getline(ii), '\(\k\@!.\)\+')
        let stat[word] = get(stat, word, 0) + 1
    endfor
endfor
echo sort(keys(filter(copy(stat), 'v:val == 1')))

تشغيل ذلك على VIM/vim73/autoload/vimball.vim (ملف 23.2 كيلو بايت مع 737 سطر) ، أحصل على تكرارات الكلمات الرئيسية التالية:

12, 1502, 2004, 2009, 2010, 299, 31, 4, 702, Allow, Apr, At, Author,
AutoInstall, Constants, Copyright, Date, DechoTabOn, ENTER, Error,
Functions, GetLatestVimScripts, Input, LICENSE, Listing, Load, Modelines,
No, Normal, Once, Output, Own, Ph, Risk, Statement, Usage, Use, VIM,
Version, Vim, Windoze, Your, about, accomplished, actions, allow, already,
appear, appears, applies, apportion, assume, attempts, automatically, base,
based, bash, both, bypass, c, ch, change, construct, continue, copyright,
cp, cr, create, creates, cygwin, decompress, decompression, defined, did,
dir, distribute, does, doesn, embedded, enc, endfor, even, events,
evidence, except, existing, express, extraction, fmr, fo, force, function,
getpos, give, given, grab, ie, implied, included, index, initialize, input,
inputrestore, inputsave, insure, invoked, its, just, keep, keepcpo, list,
listing, loop, made, messages, missing, mkvimball, named, neither, next,
noacd, nofile, noma, nor, normal, noruler, noshowcmd, ok, older, on,
option, options, over, patch, pick, picked, placed, present, previous,
prologue, prompt, read, readable, redraw, removed, same, see, setpos,
setting, settings, shell, showing, skip, specified, specify, spite, split,
standard, string, strlen, sure, suspect, switch, ta, tab#, take, that,
title, true, un, undefined, under, used, v31, various, warning, warranty,
was, when, where, will, wrote, your, zsh

جلالة الملك ، لا تبدو مفيدة جدا بالنسبة لي (كما أنها لا تحصل على أفضل بكثير عندما يتم استبعاد التعليقات) ، ولكن ربما يمكنك أن تأخذ هذا وتحسن عليه.

2
وأضاف