Ho notato riferimenti a L9 in un paio di posti, recentemente da Vundle. È vero, non è documentato all'inizio. Ma ci sono commenti decenti nel file sorgente principale, autoload/l9.vim
. È un insieme di funzioni di utilità generale. Ecco il grosso delle sue API, aumentando il trattamento di Vim di liste, numeri, stringhe, linee, percorsi, file, buffer, finestre, di ricerca, e di più:
" returns false if the caller script should finish.
" a:vimVersion: if 0, don't check vim version
" a:l9Version: same rule as v:version
function l9#guardScriptLoading(path, vimVersion, l9Version, exprs)
" Removes duplicates (unstable)
" This function doesn't change the list of argument.
function l9#unique(items)
" [ [0], [1,2], [3] ] -> [ 0, 1, 2, 3 ]
" This function doesn't change the list of argument.
function l9#concat(items)
" [ [0,1,2], [3,4], [5,6,7,8] ] -> [ [0,3,5],[1,4,6] ]
" This function doesn't change the list of argument.
function l9#zip(items)
" filter() with the maximum number of items
" This function doesn't change the list of argument.
function l9#filterWithLimit(items, expr, limit)
" Removes if a:expr is evaluated as non-zero and returns removed items.
" This function change the list of argument.
function l9#removeIf(items, expr)
" Snips a:str and add a:mask if the length of a:str is more than a:len
function l9#snipHead(str, len, mask)
" Snips a:str and add a:mask if the length of a:str is more than a:len
function l9#snipTail(str, len, mask)
" Snips a:str and add a:mask if the length of a:str is more than a:len
function l9#snipMid(str, len, mask)
" wildcard -> regexp
function l9#convertWildcardToRegexp(expr)
" Removes from the line matching with a:begin first to the line matching with
" a:end next and returns removed lines.
" If matching range is not found, returns []
function l9#removeLinesBetween(lines, begin, end)
" returns the path separator charactor.
function l9#getPathSeparator()
" [ 'a', 'b/', '/c' ] -> 'a/b/c'
function l9#concatPaths(paths)
" path: '/a/b/c/d', dir: '/a/b' => 'c/d'
function l9#modifyPathRelativeToDir(path, dir)
" Almost same as readfile().
function l9#readFile(...)
" Almost same as writefile().
function l9#writeFile(...)
" :wall/:wall! wrapper. Useful for writing readonly buffers.
function l9#writeAll()
" Loads given files with :edit command
function l9#loadFilesToBuffers(files)
" Deletes all buffers except given files with :bdelete command
function l9#deleteAllBuffersExcept(files)
" move current window to next tabpage.
function l9#shiftWinNextTabpage()
" move current window to previous tabpage.
function l9#shiftWinPrevTabpage()
" move to a window containing specified buffer.
" returns 0 if the buffer is not found.
function l9#moveToBufferWindowInCurrentTabpage(bufNr)
" returns 0 if the buffer is not found.
function s:moveToOtherTabpageOpeningBuffer(bufNr)
" move to a window containing specified buffer.
" returns 0 if the buffer is not found.
function l9#moveToBufferWindowInOtherTabpage(bufNr)
" echo/echomsg with highlighting.
function l9#echoHl(hl, msg, prefix, addingHistory)
" input() with highlighting.
" This function can take list as {completion} argument.
function l9#inputHl(hl, ...)
" only called by l9#inputHl() for completion.
function l9#completeForInputHl(lead, line, pos)
" returns last selected text in Visual mode.
function l9#getSelectedText()
" loads given text as Vim script with :source command
function l9#loadScript(text)
" Execute :vimgrep and opens the quickfix window if matches are found.
"
" a:pattern: search pattern. If ommitted, last search pattern (@/) is used.
" a:files: List of files
function l9#grepFiles(pattern, files)
" Execute :vimgrep for buffers using l9#grepFiles()
" See also: :L9GrepBuffer :L9GrepBufferAll
function l9#grepBuffers(pattern, bufNrs)
" Highlights lines using :sign define and :sign place.
" a:linehl, a:text, a:texthl: See |signs|. Ignored if empty string.
" a:locations: List of [{buffer number}, {line number}] for highlighting
function l9#placeSign(linehl, text, texthl, locations)
" Notify a message using an external program.
" Currently supports Balloonly, Screen, and Tmux.
function l9#notifyExternally(msg)
Beh, che altro avete bisogno di sapere al di là " è una biblioteca "? L9 è una libreria usata da altri plugin quindi è gestita come qualsiasi altra dipendenza: tu * dovresti * aggiungerla quando è necessaria e tu * potresti * lasciarla o cancellarla quando non lo è. Se non sei un sviluppatore di plugin, ciò che la libreria fa o non è di nessun interesse ma, se sei solo curioso, leggere il codice sorgente dovrebbe essere sufficiente. – romainl
@romaini "è una libreria" dice tanto quanto: "un po 'di codice": assolutamente nulla. Un buon prodotto software dovrebbe avere una descrizione a cosa serve e come usarlo, farà parte del pacchetto di rilascio. Essere un asino intelligente dicendo "basta leggere il codice" va bene se il codice non è lungo. – eddy147