Wyobraź sobie, że chcesz zacytować poniższe słowo. Jeśli |
jest to pozycja kursora, możesz z łatwością zacytować słowo z cw""<Esc>P
trybu normalnego.
|below
Chcę osiągnąć to samo zachowanie w trybie wiersza poleceń. Moje pytanie brzmi: jak mogę powiedzieć trybowi wiersza poleceń, że chcę wpisać <Esc>
. Próbowałem :norm cw""<Esc>P
i kilka innych odmian, ale po prostu dostaję ""<Esc>P
zamiast "below"
.
Wciąż związany z tym chciałbym wiedzieć, jak mogę tworzyć polecenia Ctrl w trybie wiersza poleceń. Na przykład cw"<C-r>""<Esc>
zamiast tego mógłbym zacytować wyżej wymienione słowo . Ale wtedy potrzebowałbym wiersza poleceń, aby pisać <C-r>
dla mnie. Jak mogę to zrobić?
command-line
Gonçalo Ribeiro
źródło
źródło
<C-x><C-e>
w readline do edycji wiersza poleceń$EDITOR
, masz<C-f>
w Vimie, aby otworzyć okno wiersza poleceń. Zobaczyć:help cmdline-window
.Odpowiedzi:
<C-v>
jest tym, czego szukasz. Umożliwia wprowadzanie literalnych znaków (np. LiterałuEsc
zamiast ciągu „Esc”) bez konieczności ucieczki.wyświetla się jako:
i zrobi, co chcesz (tj. zacytuj słowo). Możesz także użyć tego z innymi
<C-?>
mapowaniami. Na przykład twoje drugie żądanie:wyświetla się jako:
I spowoduje to tak samo jak powyżej. Nie ma potrzeby dołączania dodatkowych
Esc
na końcu.źródło
Jest tak, ponieważ specjalne klawisze, takie jak,
<Esc>
nie są tłumaczone nanormal
polecenia i są traktowane jak naciśnięty <Esc>. Aby temu zaradzić, możesz użyćexec
polecenia. Tak jak:Pamiętaj, że musisz wstawić ukośnik odwrotny przed cudzysłowami
<Esc>
, a używanie pojedynczych cudzysłowów zamiast podwójnych cudzysłowów nie będzie działać.źródło
"\<C-{insert key}>"
Tryb wiersza poleceń jest inny; nie można tam używać tych samych (edycji w trybie normalnym) poleceń edycyjnych. Możesz znaleźć listę poleceń na
:help c_CTRL-V
.Teraz jest okno wiersza poleceń (
:help command-line-window
), które można wprowadzićq:
z<C-F>
trybu normalnego i z wiersza poleceń. W tym oknie możesz używać wszystkich normalnych poleceń i mapowań, więc byłaby to opcja 1.Opcja 2 to specjalne odwzorowania dla trybu wiersza poleceń. Jak powiedziałem, nie można zastosować tego podejścia za pośrednictwem
:normal
et al. Kluczem do ich zdefiniowania jest:help c_CTRL-\_e
mapowanie, które „ocenia [s] {wyrażenie} i zastępuje [s] cały wiersz polecenia wynikiem”. Oto prosty przykład, który działa poprawnie tylko na końcu wiersza polecenia:źródło