2010-11-21 12 views
6

Niedawno zmieniłem z Eclipse na Vim. Uwielbiam to. Jest kilka problemów, nad którymi pracuję, ale jednym z tych, z którymi mam wiele kłopotów, jest komentarz doktora PHP. W Eclipse mogę wpisać:Vim: Jak zmienić tekst z indent skryptu

/** [enter] 

i następna linia będzie automatycznie wypełnić

* 

Więc musiałbym:

/** 
* [comment goes here] 

Zastanawiam się, czy istnieje coś takiego dla vim. Wygląda na to, że istnieje kilka wtyczek do automatycznego generowania komentarzy do dokumentu przez uruchomienie polecenia, ale chciałbym, aby robił to podczas pisania.

Grałem ze skryptem wcięcia w PHP (http://www.vim.org/scripts/script.php?script_id=1120) i udało mi się rozpoznać, kiedy znajduje się on w bloku komentarza doktora, ale nie mogę wymyślić, jak go zmodyfikować i dodać "*" po naciśnięciu Enter, gdy jesteś wewnątrz bloku.

Próbowałem tego co widziałem inne wtyczki zrobić:

let @z = ' * ' 
put! z 

próbowałem też:

exe 'normal!' '"zgp' 

ale bez powodzenia. Czy nie jest to możliwe ze skryptu z wcięciem, a jeśli nie, to w jaki sposób mogę sprawić, by Vim rozpoznał blok komentarza do dokumentu i odpowiednio zareagował podczas pisania?

Każda pomoc będzie bardzo ceniona!

Odpowiedz

2

Nie musisz się martwić plikami z wcięciami. Vim's formatoptions zrobi to dla ciebie i w różnych językach (nie tylko PHP).

Upewnić masz r wliczone w formatoptions:

:setlocal fo+=r "to set 
:set fo? "to query 

Można uwzględnienie tego w swojej .vimrc lub w .vim/ftplugin/php.vim (jeśli po prostu chcesz, aby uaktywnić to dla PHP).

Więcej informacji na temat formatoptions i wtyczek typu pliku, patrz:

+1

To jest właściwa droga. Jako szybkie podsumowanie bardzo wyczerpującej odpowiedzi, powiedziałbym dodać 'set fo + = r' do .vimrc. –

+1

Dzięki za to ... wydaje się działać świetnie – andrew

+0

Dziwne, działa to, gdy mam wszystkie wtyczki wyłączone i ustawiam fo + = r, ale kiedy używam skryptu wcięcia PHP (bez modyfikacji) i ustawiam fo + = r, to robi nie działa. ustawić fo? == "qrowcb" ... jakieś pomysły? Czy istnieje inne ustawienie, które może wyłączyć to? – andrew

1

Dodanie poniższego kodu do vimrc zrobić coś podobnego do tego, co chcesz?

autocmd BufNewFile,BufRead *.php setlocal formatoptions+=r formatoptions+=o 
autocmd BufNewFile,BufRead *.php setlocal comments=s1:/*,mb:*,ex:*/,://,:# 

Obecnie nie dość dowiedzieć się, jak zrobić to praca bez przesłanianie <!-- ---> komentowanie, który to robi. To znaczy. to przerwie automatyczne wcięcie z komentarzami <!-- -->.

Edytuj. Dodano ://,:# do comments, podobnie jak w przypadku dystrybucji Johnsyweb.

+0

'comments' powinny być ustawione automatycznie przez dostarczonego' php. skrypt wcięcia vim ". '' komentarze są częścią składni HTML. – Johnsyweb

+0

@Johnsyweb Tak, ale powyższy fragment zastępuje to przez wykonanie 'comments = ...'. Jeśli zamiast tego zrobiłem "comments + = ...", komentarze w stylu/* */nie działają poprawnie --- nie jestem pewien dlaczego. – dennycrane

+0

Działa dla mnie nieszablonowo: 'comments = s1:/*, mb: *, ex: * /,: //,: #' – Johnsyweb

0

warto dodać to do Twojego vimrc:

let g:PHP_autoformatcomment=1 

Jestem na Mac i wydaje się być domyślnie włączona. Działa dokładnie tak, jak to określiłeś.

Powiązane problemy