vi / vim, jak mogę wypisać wiele wierszy do nowego pliku


Odpowiedzi:


44

Możesz to zrobić

:100,200w filename

Oczywiście 100,200 to zakres wierszy, które chcesz napisać.


Czy adresy są włączające czy wyłączne?
Marcin

3
Włącznie. Także jeśli używasz wzorców:: / ^ coś /, / ^ else / w nazwa pliku lub oznacza: „a”, nazwa pliku zawiera wiersze oznaczone „a” i „b”.
Bruce Ediger,

Cześć @Bernhard, co jeśli chcę wyciąć linie z bieżącego pliku.
Ravi Sevta

19

Najbardziej ogólny:

  1. Przesuń kursor do pierwszego wiersza grupy, którą chcesz napisać. Hit m i asekwencyjnie. To jest „set mark o nazwie„ a ””.

  2. Przesuń kursor do ostatniego wiersza grupy, naciśnij „m” i „b”.

  3. Przejdź do trybu poleceń: naciśnij sekwencję, :'a,'b w filenamea następnie naciśnij klawisz powrotu.

Działa to w vi, nvi i vim.

Inna metoda działa w bardziej nowoczesnym vimie:

  1. Umieść kursor w pierwszym wierszu grupy wierszy, które chcesz zapisać. Hit V, dla „uruchom wizualny blok linii”.

  2. Przesuń kursor na dół grupy linii. Vim podświetli odwrotnym wideo każdej linii.

  3. Wypisać. Naciśnij, :aby przejść do trybu wiersza poleceń. Spowoduje to wyświetlenie monitu na dole ekranu, który wygląda następująco: :'<,'> Oznacza to od początku bloku wizualnego do końca. Wpisz wnazwę pliku i naciśnij klawisz Return.

Możesz dodać pojedyncze linie na końcu pliku, umieszczając kursor na linii, którą chcesz napisać, a następnie wpisując: :.w >> filenamei naciskając klawisz return.

Polecenia „napisz grupę wierszy” działają również z „>> nazwa pliku” zamiast po prostu „nazwa pliku”. „>>” powoduje, że vi lub vim dołączają się do pliku, a nie tylko go zapisują.


8

Aby dodać do odpowiedzi Bernharda, możesz także wybrać region za pomocą trybu wizualnego, a następnie wejść :w filename.


8

Jeśli znasz numery wierszy, które chcesz zapisać, możesz to zrobić z wiersza polecenia:

vim -c "100,200w new_file.txt" -c wq original_file.txt

1

jedną małą sztuczką jest użycie względnego numeru linii. Na przykład:: + 0, + 99 w nazwa pliku wpisz kolejne 100 wierszy do nazwy pliku.


Czy to nie zastąpi oryginalnego pliku? OP chciałby zapisać do innego pliku.
SabreWolfy

1
@SabreWolfy No; może po numerach linii brakuje nazwy pliku. Właśnie przetestowałem jego wersję i zadziałało.
felwithe
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.