Wstaw znak powrotu karetki w vim

101

Edytuję ramkę protokołu sieciowego zapisaną w pliku w systemie Unix ( \nznaki nowej linii). Muszę wstawić znak powrotu karetki ( U+000Daka \r). Kiedy próbuję wkleić go ze schowka ( "+p) lub wpisać za pomocą Ctrl+ Shift+ u- 000d, następuje wstawienie nowego wiersza ( U+000A).

Jaki jest właściwy sposób, aby to zrobić?

Andrey Vlasovskikh
źródło
Nie. Myślę, że twoja ucieczka może być niewłaściwa. Czy możesz zaproponować inne (działające) rozwiązanie oparte na wyrażeniach regularnych? :)
Andrey Vlasovskikh

Odpowiedzi:

169

Typ: ctrl- v ctrl-m

W systemie Windows: ctrl- q ctrl-m

Ctrl- Vmówi vi, że następny wpisany znak powinien być wstawiony dosłownie i ctrl- mjest naciśnięciem klawisza do powrotu karetki.

R Samuel Klatchko
źródło
10
Dzięki, to działa dla mnie. Pomoc można znaleźć za pomocą :help ins-special-keys.
Andrey Vlasovskikh
1
Jeśli używasz domyślnej instalacji systemu Windows, zamień CTRL + V na CTRL + Q, ponieważ CTRL + V jest odwzorowywany na „wklej”.
Cyber ​​Oliveira
9
Po wielu headbangingu dodaję to tutaj, chociaż jest to stare pytanie: aby wstawić literalny znak CR z polecenia: s, musisz poprzedzić go ukośnikiem odwrotnym, w przeciwnym razie vim (7.1.314) przekonwertuje go na koniec znak linii odpowiedni dla twojego ustawienia formatu pliku. czyli wejść :s/.../\^V^M/g.
DerfK
6
A co z Ctrl+Vnastępującymi po nim Enter? Zauważyłem, że również wstawia ^Mdo tekstu
Braden Best
2
Zauważ, że działa to również dla ESC: najpierw przejdź do trybu INSERT (i), a następnie Ctrl + V ESC, a otrzymasz znak ESC.
Christopher Schultz