Konfigurieren Sie VIM zum Kopieren und Einfügen von Tastaturkürzeln aus dem Systempuffer in Ubuntu?

14

Wie konfiguriere ich VIM für die Verwendung Ctrl- czu kopieren und Ctrl- vvom Systempuffer in Ubuntu fügen?

wonea
quelle
Darf ich vorschlagen, Creme zu verwenden? cream.sourceforge.net Dies ist eine Variante von vim, die speziell für Benutzer entwickelt wurde, die sich mit der Arbeitsweise von vim nicht wohl fühlen.
Turm

Antworten:

16

Standardverhalten unter MS Windows: -

Hier ist ein Auszug aus der Datei mswin.vim: -

" CTRL-X and SHIFT-Del are Cut
vnoremap <C-X> "+x
vnoremap <S-Del> "+x

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y
vnoremap <C-Insert> "+y

" CTRL-V and SHIFT-Insert are Paste
map <C-V>       "+gP
map <S-Insert>      "+gP

cmap <C-V>      <C-R>+
cmap <S-Insert>     <C-R>+

" Pasting blockwise and linewise selections is not possible in Insert and
" Visual mode without the +virtualedit feature.  They are pasted as if they
" were characterwise instead.
" Uses the paste.vim autoload script.

exe 'inoremap <script> <C-V>' paste#paste_cmd['i']
exe 'vnoremap <script> <C-V>' paste#paste_cmd['v']

imap <S-Insert>     <C-V>
vmap <S-Insert>     <C-V>

" Use CTRL-Q to do what CTRL-V used to do
noremap <C-Q>       <C-V>

und das Skript paste.vim, das für das Ausschneiden / Einfügen im Blockmodus erforderlich ist:

    " Vim support file to help with paste mappings and menus
" Maintainer:   Bram Moolenaar <[email protected]>
" Last Change:  2006 Jun 23

" Define the string to use for items that are present both in Edit, Popup and
" Toolbar menu.  Also used in mswin.vim and macmap.vim.

" Pasting blockwise and linewise selections is not possible in Insert and
" Visual mode without the +virtualedit feature.  They are pasted as if they
" were characterwise instead.  Add to that some tricks to leave the cursor in
" the right position, also for "gi".
if has("virtualedit")
  let paste#paste_cmd = {'n': ":call paste#Paste()<CR>"}
  let paste#paste_cmd['v'] = '"-c<Esc>' . paste#paste_cmd['n']
  let paste#paste_cmd['i'] = 'x<BS><Esc>' . paste#paste_cmd['n'] . 'gi'

  func! paste#Paste()
    let ove = &ve
    set ve=all
    normal! `^
    if @+ != ''
      normal! "+gP
    endif
    let c = col(".")
    normal! i
    if col(".") < c " compensate for i<ESC> moving the cursor left
      normal! l
    endif
    let &ve = ove
  endfunc
else
  let paste#paste_cmd = {'n': "\"=@+.'xy'<CR>gPFx\"_2x"}
  let paste#paste_cmd['v'] = '"-c<Esc>gix<Esc>' . paste#paste_cmd['n'] . '"_x'
  let paste#paste_cmd['i'] = 'x<Esc>' . paste#paste_cmd['n'] . '"_s'
endi

quelle
3
Fügen Sie für Windows-Benutzer, die versehentlich SEO hier vorgenommen haben (OP ist Ubuntu), source $VIMRUNTIME/mswin.vimoben in Ihrer _vimrc-Datei hinzu. Irgendetwas, das Sie daran hindert, die Datei auch unter Linux erfolgreich aufzunehmen ?
Ruffin
1
@ruffin Wenn Sie die Quelle untersuchen, werden Sie feststellen, ob Anweisungen für UNIX vorhanden sind, sodass der Ersteller auch die Verwendung mswin.vimunter Linux im Auge hatte.
RoliSoft
Die Einstellung C-Vzum Einfügen unterbricht den
Eingabemodus für
0

Dies ist nur minimal, vorausgesetzt, die meisten Dinge sind Standardeinstellungen **:

:behave mswin
:set clipboard=unnamedplus
:smap <Del> <C-g>"_d
:smap <C-c> <C-g>y
:smap <C-x> <C-g>x
:imap <C-v> <Esc>pi
:smap <C-v> <C-g>p
:smap <Tab> <C-g>1> 
:smap <S-Tab> <C-g>1<
  • Zeile 1: Lässt die Umschalttaste + Pfeile Text auswählen (und macht mehr *)

  • Zeile 2: macht "+ (und" *) zum Standardregister (GUI / Term-Zwischenablage)

  • Zeilen 3,4,5,6: Macht Strg-x / c / v Ausschneiden / Kopieren und Einfügen

  • Zeile 7,8: TAB / UMSCHALT + TAB-Einzug / Auszug Auswahl treffen

Achtung: *** [: set] -Einstellungen können dieses Verhalten ändern, und es sind möglicherweise viele Anpassungen erforderlich, um Ihren Anforderungen zu entsprechen, wie ich bereits sagte, minimal. * [: behave] ändert viele [: set] Einstellungen in den Dokumenten.

osirisgothra
quelle
0

Ordnen Sie Strg-V zu, um den Systembefehl auszuführen, der die Systemzwischenablage erfasst, in ein Register wirft und auf dem Bildschirm unter dem Cursor einfügt:

vmap <C-c> y:call system("xclip -i -selection clipboard", getreg("\""))<CR>:call system("xclip -i", getreg("\""))<CR>
nmap <C-v> :call setreg("\"",system("xclip -o -selection clipboard"))<CR>p

Quelle: http://vim.wikia.com/wiki/In_line_copy_and_paste_to_system_clipboard

Eric Leschinski
quelle
1
Das ist unnötig komplex. Sie können einfach "+ y" und "+ p"
zuordnen