Eine schnelle Lösung, die ich in diesem Fall verwenden würde, ist es, einige Tastendrücke auf die Abkürzung einzufügen:
iabbrev <? <?=?><Left><Left>
würde die Cursor zwei Plätze links Platz, nach den =
.
Auf diese Weise können Sie verschiedene Bewegungstasten wie <End>
, <Home>
oder sogar wieder in den normalen Modus mit <Esc>
und Befehl üblichen Normal-Mode-Befehle verwenden. Das Beispiel wäre dann
iabbrev <? <?=?><Esc>hha
und es tut das gleiche wie das erste Beispiel. Wenn Sie eine Abkürzung mit Leerzeichen erweitern, wird ein zusätzliches Leerzeichen angezeigt.
, die Sie loswerden können, indem Sie in der Abkürzung
<BS>
(Backspace) verwenden.
Oder erweitern Sie mit <C-]>
, die keinen Platz lassen wird.
Korrektur: da die Abkürzung erste erweitert wird, und danach den Raum eingeführt wird, müssen Sie eine kleine Funktion in der Hilfe (map.txt) gefunden:
func Eatchar(pat)
let c = nr2char(getchar(0))
return (c =~ a:pat) ? '' : c
endfunc
Das beste in .vimrc
gestellt wird. Jetzt wird die folgende Abkürzung arbeitet voll als intented:
:iabbrev <silent> <? <?=?><Left><Left><C-R>=Eatchar('\s')<CR>
Es ist ein bisschen chaotisch, aber hat einen externen Funktionsaufruf, der den Leerraum entfernt und es sollte gut funktionieren.
"
" in {rtp}/ftpluvin/vim/vim_snippets.vim
inoreab <buffer> <silent> if
\ <C-R>=InsertSeq('if', 'if!cursorhere!\nendif!mark!')<CR>
Andere Plugins bieten eine ähnliche Funktion:
Ich versuchte iabbrev =?> HHA aber es löscht Zeichen "=" :) wo soll ich Stelle setzen? Es ist genau das, was ich will, außer diesem Problem. –
ivan73
Es tut mir wirklich leid, die '' -Funktion vor dem Antworten nicht zu testen. Ich habe in einem geeigneten Workaround bearbeitet. –
progo
Cool, es funktioniert, diese Antwort zu akzeptieren :) ich es so bin mit: 'iabbrev =$?> HHA = Eatchar ('\ n') ' –
ivan73