Definieren Sie benutzerdefinierte Befehle für die Register * und +


9

Wenn ich einen Build von Vim mit dieser xterm_clipboardFunktion verwende, ist der Inhalt der Systemzwischenablage über das +Register verfügbar .

Wenn der von mir verwendete Build nicht über diese Funktion verfügt, kann ich das "+Register veranlassen, meine benutzerdefinierten Programme aufzurufen, um die Systemzwischenablage abzurufen und festzulegen ( xsel -bound xsel -bioder auch mit xclip)? Ebenso mit "*anrufen xsel -pound xsel -pi.

Der Punkt ist, in der Lage zu sein, so etwas wie zu tippen, "+pohne sich Sorgen machen zu müssen, ob die Funktion verfügbar ist. Typing :r !xsel -b<Enter>ist nicht das, was ich suche: ich die gleichen Tastenanschläge arbeiten möchten, und ich möchte , dass die Paste Varianten zu folgen , was für „true“ Register verfügbar ist ( P, gp, ...).

Bonus: Kann ich benutzerdefinierte Befehle für andere Registernamen definieren?

Antworten:


7

Ein paar <expr>Mappings sollten hier die Arbeit erledigen können. Die Grundstruktur wäre

function! ClipboardOrXclip(command, register)
    if a:register !~ '[+*]' || has('xterm_clipboard') || has('gui_running')
        " Just return the original command if the clipboard is accessible
        " or it's not a register that should be handled by xsel
        return a:command
    endif
    if a:register == '+'
        return "<Esc>:r !xsel -bo<CR>"
    else
        return "<Esc>:r !xsel -po<CR>"
    endif
endfunction

nnoremap <silent> <expr> p ClipboardOrXclip('p', v:register)

Die Funktion müßte erweitert werden , um alle Variationen zu handhaben p, P, gpetc. , aber dies sollte ein guter Anfang sein.


Dies scheint auf dem richtigen Weg zu sein, aber es funktioniert nicht. Eine Ebene p(ohne Vorgänger- "und Registernamen) macht nichts anderes als make wird "pin der Statuszeile angezeigt. "apist äquivalent zu a, "bpPieptöne, ... Ich verstehe die Logik nicht. "+Pieptöne sofort, ich kann nicht einmal sagen, dass ich meine +oder *als Registername.
Gilles 'SO - hör auf böse zu sein'

1
Unter der Annahme, dass diese grundlegenden Probleme gelöst sind, gibt es eine vollständige Liste von Befehlen, die ich überschreiben müsste? Das Set sieht entmutigend aus, besonders wenn ich auch das Rucken unterstützen möchte.
Gilles 'SO - hör auf böse zu sein'

@ Gilles Aktualisiert, um das Verhalten mit Nicht-+ / * Registern zu beheben. Das Problem, "+wann Ihr vim hat, -xterm_clipboardist schwieriger, weil es nie zu dieser Funktion kommt. Durch Angabe eines ungültigen Registers ( +) wird der Befehl abgebrochen. Also, es sieht so aus, als "+"*
müsste
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.