[+] VIM, automatyczne dopisywanie nawiasów
: 31 lipca 2011, 20:13
Zauważyłem, w którymś IDE do Javy (bodajże Eclipse) bardzo przyjemną funkcję. Otóż, gdy dajmy na to napisałbym:
edytor automatycznie dopisywał brakujący drugi nawias "]". Tak samo przy innych typach nawiasów.
Oczywiście samo takie dopasowanie w vimie sprowadza się do napisania:
Jednak taka konfiguracja jest o tyle nieprzyjemna, że przykładowo jak mamy następujący przypadek:
Gdzie kursor jest w miejscu oznaczonym "X" to wstawiając tam nawias zrobi nam się:
A oczywiście lepiej by było gdyby wynik był następujący:
Stąd mam następujące pytanie, jak dałoby się, z użyciem przykładowo funkcji skoku do parzystego nawiasu "%" zrobić sprawdzenie, czy nie ma nawiasu zamykającego, jeżeli jest to automatycznie wpisuje tylko otwierający, natomiast w przypadku braku zamykającego wpisuje oba?
Z góry dziękuję za wszelką pomoc.
Edycja:
No cóż, poradziłem sobie jakoś.
Proszę, oto brzydki gotowiec dla leniwych:
Kod: Zaznacz cały
jakąś_tablicę[
Oczywiście samo takie dopasowanie w vimie sprowadza się do napisania:
Kod: Zaznacz cały
imap ( ()<Esc>ha
imap [ []<Esc>ha
imap { {<CR>}<C-O>O
Kod: Zaznacz cały
jakaś_tablicaXindeks]
Kod: Zaznacz cały
jakaś_tablica[]indeks]
Kod: Zaznacz cały
jakaś_tablica[indeks]
Z góry dziękuję za wszelką pomoc.
Edycja:
No cóż, poradziłem sobie jakoś.
Proszę, oto brzydki gotowiec dla leniwych:
Kod: Zaznacz cały
" Automatyczne dopełnianie nawiasów
imap ( (<Esc>:call Nawias()<CR>a
imap [ [<Esc>:call Nawias()<CR>a
imap { {<Esc>:call Nawias()<CR>a
function! Nawias()
execute "normal %"
let zmienna = getline(".")[col(".") - 1]
if zmienna == '['
execute "normal a]"
endif
if zmienna == '('
execute "normal a)"
endif
if zmienna == '{'
execute "normal a}"
endif
execute "normal %"
endfunction