Wenn die neue Spalte in jeder Zeile den gleichen Wert haben wird (dh Ihr anfänglicher Ruck war in einer einzigen Zeile), dann ist es wahrscheinlich einfacher, das Leerzeichen zwischen der Spalte Benutzername und Kennwort und den Typ A
(oder I
) zu wählen anhängen (einfügen). Wenn Sie zum normalen Modus ( Esc
) zurückkehren, fügt Vim den Text auch an den Rest der ursprünglichen Auswahl an.
Wenn Sie wirklich ein sich wiederholendes Muster ausführen müssen, können Sie eine Funktion und ein Mapping wie folgt verwenden:
:function! PutRegFilledToRange() range : let l:fill = '' : let l:lines = getreg() : let l:lineStart = 0 : let l:linesLen = strlen(l:lines) : let l:lineIndex = 0 : let l:linesNeeded = a:lastline - a:firstline + 1 : while l:lineIndex < l:linesNeeded : let l:lineEnd = matchend(l:lines, "\n\\|$", l:lineStart) : let l:line = strpart(l:lines, l:lineStart, l:lineEnd - l:lineStart) : if l:lines[l:lineEnd - 1] != "\n" : let l:line = l:line . "\n" : endif : let l:fill = l:fill . l:line : let l:lineStart = l:lineEnd < l:linesLen ? l:lineEnd : 0 : let l:lineIndex = l:lineIndex + 1 : endwhile : : normal gv : " This probably does not make much sense in any mode : " other than block modes, but we will try to cope. : if mode() == "\<C-V>" || mode() == "\<C-S>" : let l:newMode = "\<C-V>" : elseif mode() == 'v' || mode() == 's' : let l:newMode = 'v' : else : let l:newMode = 'V' : endif : let l:origReg = getreg('') : let l:origRegType = getregtype('') : try : call setreg('', l:fill, l:newMode) : execute 'normal ' . v:count1 . 'p' : finally : call setreg('', l:origReg, l:origRegType) : endtry :endfunction :vmap _f :call PutRegFilledToRange()<CR>
Fügen Sie Ihre .vimrc-Datei oder eine andere Datei ein (und führen Sie Folgendes aus: source / path / to /). Oder fügen Sie es direkt in eine Vim-Sitzung ein.
Um es zu benutzen:
C-Vy
: Blockieren Sie den Text, den Sie für das wiederholte Einfügen verwenden möchten, visuellC-V
: Wählen Sie den Block aus, den Sie ersetzen möchten_f
: füllt den ausgewählten Block mit wiederholten Zeilen des aktuellen Registers ("a_f
füllt den Block mit Zeilen aus Register a)