Czy istnieje sposób na wstawienie pojedynczego znaku, a następnie wyjście z trybu wstawiania?

10

Kiedy przeglądam tekst i, na przykład, dodając backtiksy wokół niektórych słów, cytatów lub czegokolwiek, denerwujące jest to, że muszę naciskać Esc lub Ctrl- [po każdej wstawce. Wstawki (i dodatki) są różne, więc .niewiele pomaga.

Czy jest coś podobnego do rtego, co powraca do trybu normalnego po jednym znaku - ale używa trybu wstawiania zamiast trybu zastępowania?

Dzika karta
źródło
3
Być może powinieneś rozważyć użycie (lub rozszerzenie) wtyczki vim-surround , aby pracować z tekstem w bardziej znaczący sposób.
VanLaser,

Odpowiedzi:

11

Jeśli nie ma (nie szukałem), możesz użyć tego mapowania w .vimrc:

nnoremap <C-I> i <ESC>r

To inserts, umieszcza przestrzeń, ESCmałpy i zaczyna jednej litery rEUmieãæ. Zostanie to przypisane do CtrlI.

Jest to hack i pozostawi wiszące miejsce, jeśli uderzysz w ucieczkę przed wpisaniem litery - ale to lepsze niż nic!

Qix - MONICA BYŁA TŁUMACZONA
źródło
1
Nieźle ... Prawdopodobnie skorzystam z tego, jeśli nikt nie wymyśli czegoś lepszego. :)
Wildcard,
2
@Wildcard Nie zdawałem sobie sprawy z tego, jak bardzo trafiłem na ten przypadek użycia, nie zdając sobie z tego sprawy. Dobre pytanie :) Dodałem go również do mojego vimrc.
Qix - MONICA ZOSTAŁ SZYBOWANY
2
Większość dnia spędziłem na poprawianiu kuponów. Kursywa, kod wbudowany, wcięcia nagłówków, hiperłącza ... wszystkie z nich zawierają jeden znak. :) W rzeczywistości twoje rozwiązanie jest idealne; Zacznę go teraz używać.
Wildcard,
2
Wada: Nie można tego powtórzyć z .poleceniem. :(
Wildcard
1
@Wildcard niestety, po przeprowadzeniu drobnych badań, nie ma sposobu, aby utworzyć gałąź ręcznego powtarzania, .chyba że używasz repeat.vim.
Qix - MONICA MISTREATED 30.01.16
0

Aby wstawić znak na końcu słowa (zamiast w pozycji kursora), użyj

nnoremap <C-a> a <ESC>r

To mapowanie na Ctrl + a, możesz oczywiście mapować na cokolwiek innego.

Mam te dwa w swoim, .vimrcwięc nie krzątam się zbytnio :)

" Insert char at cursor position
nnoremap <C-i> i <ESC>r
" Append char after cursor position
nnoremap <C-a> a <ESC>r
Ruto Collins
źródło