2012-02-06 9 views
15

Czy w Vimie można przenieść zaznaczony tekst do <current_file>.bak, dodając lub przygotowując? Jeśli to możliwe, plik kopii zapasowej nie powinien być wyświetlany.Dołącz lub wstaw zaznaczony tekst do pliku w Vim

mi wyobrazić obieg być:

  1. Wybierz tekst
  2. Rodzaj :sbak
  3. Wybór zostanie zapisany w <current_file>.bak

Odpowiedz

26

można to zrobić w trzech krokach:

  • typu Shift-vj ... j aby wybrać kilka linii
  • typ :'<,'>w! >>file.bak do SAV e wybrane linie file.bak (dołącz)
  • typ gvd usunąć oryginalne linie

Można napisać polecenia zdefiniowane przez użytkownika Sbak jeśli chcesz:

com! -nargs=1 -range Sbak call MoveSelectedLinesToFile(<f-args>) 
fun! MoveSelectedLinesToFile(filename) 
    exec "'<,'>w! >>" . a:filename 
    norm gvd 
endfunc 
+0

Dobrze, teraz dalsze kroki: 1. Automatyczne użycie .bak jako nazwa pliku bak 2. nie dodawaj. thx. – greatghoul

+0

użyj 'expand ('%: t')', aby uzyskać bieżącą nazwę pliku – kev

+0

thx, mam ją, zamapuję ją na skrót – greatghoul

10

Co

  1. przeciwko
  2. niektóre polecenia ruchu/nawet szukać, aby zaznaczyć tekst
  3. :'<,'> w! >> /YOUR/SELECTIONFILE
  4. :'<,'>d

jest to, że tego chcesz? Jeśli więc założyć map dla niego, jak

map <F2> :'<,'> w! >> /YOUR/SELECTIONFILE<cr>:'<,'>d<cr> 

Uwaga ten dołącza do SELECTIONFILE, i nie tylko wybór, ale całych linii. Przeczytaj także :h :w i :h ++opt (w którym można dowiedzieć się o możliwych opcjach zapisu plików (np.) Można dołączyć do pliku z innym kodowaniem, co naprawdę psuje rzeczy, więc tego nie rób ;-)

Powiązane problemy