2012-09-05 14 views
8

Próbuję zapisać wybrany tekst (część linii) z Vima. Oto wiersz:Zapisuje zaznaczony tekst (linia częściowa) z Vim

Ten napis TEST - SELECTED_TARGET_WORLD

gdzie pogrubione reprezentuje zaznaczyć tekst. I to zrobić:

:'<,'> w! test/selected_text 

ale w pliku selected_text znajdę ciąg:

THIS TEST STRING - SELECTED_TARGET_WORLD 

Jak zrobić to zapisać tylko wybraną część linii?

+0

możliwe duplikat [W vim , jak napisać częściową linię do pliku?] (http://stackoverflow.com/questions/1953056/in-vim-how-to-write-a-partial-line-to-a-file) – Gilles

Odpowiedz

4

:[range]w filename działa tylko z liniami, więc ... musisz umieścić wybrany tekst w osobnej linii.

Alternatywą korzystania :help :redir:

:'<,'>"ay 
:redir filename 
:echo @a 
:redir END 
4

Sprawa nie jest udokumentowane w pomocy (:h :w) ale :w obsługuje zakresy tylko linia (byś widział, że na przykład wielu linii).

Aby zrobić to, co chcesz, musisz najpierw wkleić swój wybór do tymczasowego bufora (lub w jego własnym wierszu, a następnie umieścić go z powrotem na miejscu), a następnie zapisać ten bufor. Można go łatwo zautomatyzować, jeśli jest to coś, co często robisz.

+6

udokumentowane, ale jest mieszane z bogatą historią vi: Wszystkie polecenia Ex działają tylko na pełnych liniach; selekcja wizualna jest rozszerzeniem Vima, a zatem nieco niezgodna z modelem bazowym. –

2

zrobić to w ten sposób, FYR ~

Po wybraniu częściowe ich treścią przez "trybie wizualnym", naciśnij Ctrl-C, aby wywołać to

vmap <C-c> y:new ~/.vimbuf<CR>VGp:x<CR> 
Powiązane problemy