so viele Fragen:?
gibt es ein besseres Werkzeug zu benutzen, ich ziehe in der Regel mit einem Plugin, wie sie zu vermeiden kommen mit Funktionalität, die mich stört.
Tim Popes Abolish.vim ist das nächstgelegene Plugin, das Ihren Bedürfnissen entspricht. Aber mit den fortgeschritteneren Erweiterungen habe ich das Gefühl, dass es auch zu kurz kommen wird. Ich bin mir nicht sicher über deine bisherigen Plugin-Erfahrungen, aber Tims Plugins verhalten sich normalerweise gut und sind eng fokussiert.
Gibt es eine Möglichkeit, iab
Groß-und Kleinschreibung zu beachten? Ich meine, dass es sowohl Set als auch Set in SET korrigiert?
Nein, ich kenne keine einheimische Methode. Ich würde empfehlen Abolish zu verwenden, wenn Sie dies regelmäßig tun und einfachere Erweiterungen haben. Oder gehen Sie den ganzen Weg und verwenden Sie ein Snippet-Plugin.
Gibt es eine Möglichkeit, iab
arbeiten zu lassen, wenn bestimmte oder bestimmte Zeichen dem Wort folgen/vorangehen?Zum Beispiel möchte ich exec und exec (geändert in EXEC
und EXEC(
bzw. werden. Ich zwei Einträge erstellen kann, aber die Frage ist, ob ich das in einer einzigen Zeile tun.
Dies kann mit einem getan werden . Expansion schicker es ist in der Tat sehr ähnlich, was Rails.vim daraus macht Abkürzungen ist
Fügen Sie den folgenden Code zu Ihrem ~/.vim/after/ftplugin/sql.vim
.
function! s:selective_expand(root, good, ...)
let [pat, extra; _] = a:0 ? a:000 : ['', '']
let c = nr2char(getchar(0))
if c == "" || c == "\t"
return a:good
elseif c =~ '\s'
return a:good . c
elseif pat != '' && c =~# pat
return a:good . extra
else
return a:root . c
endif
endfunction
function! s:paren_expand(root, good)
return s:selective_expand(a:root, a:good, '[(]', "()\<left>")
endfunction
function! s:sql_expand(root, ...)
let good = a:0 ? a:1 : toupper(a:root)
let good = substitute(good, '[\"|]', '\\&', "g")
let good = substitute(good, '<', '\\<lt>', "g")
let f = 'selective_expand'
let root = a:root
if root =~ '($' && (!a:0 || good !~ '($')
let root = substitute(root, '($', '', '')
let good = substitute(good, '($', '', '')
let f = 'paren_expand'
endif
let root = substitute(root, '[\"|]', '\\&', "g")
let root = substitute(root, '<', '\\<lt>', "g")
let roots = [root]
if root !~# '\u' && root =~# '^\l'
call add(roots, substitute(root, '^\l', '\u&', ''))
endif
for r in roots
execute "iabbr <buffer> " . r . " <c-r>=<SID>" . f . "(\"" . r . "\", \"" . good . "\")<cr>"
endfor
endfunction
command! -nargs=* Sqlabbrev call <SID>sql_expand(<f-args>)
Jetzt können Sie Abkürzungen in IhremerstellenDatei wie folgt:
Sqlabbrev select
Sqlabbrev join INNER\ JOIN
Sqlabbrev exec(
Sqlabbrev
Takes 2 Argumente ähnlich wie iabbrev
. Allerdings verhält sich etwas anders:
- Abkürzungen werden immer lokal auf den Puffer
- Wenn nur 1 Argument dann wird die Erweiterung das gleiche wie das erste Argument sein, aber aus Groß
- Mit
<tab>
/<c-]>
wird das machen Erweiterung ohne folgende Leerzeichen
- Abkürzung von Leerzeichen verwenden wird erweitert und Raum
- hinzufügen Wenn die Abkürzung mit
(
endet dann erweitern mit Beendigung der ()
und setzen Sie den Cursor in den Paren
- Sie müssen Räume über
\
oder <space>
entkommen. Kann Tastencodes verwenden
- Wird einige Fallerweiterungen erstellen, wenn kein Großbuchstabe in Abkürzung gefunden wird. z.B.
Sqlabbrev select
wird erweitert select
und Select
.
könnte dies helfen: https://vi.stackexchange.com/questions/12244/case-insensitive-abkurriations – Sundeep