2012-03-02 30 views
5

Jak rozumiem, w rozpoznaje granice słowo, tekst łupania na 3 grupy:W vim, jak utworzyć niestandardowy ruch granicy wyrazów?

1) znaki, które są określone w ustawieniach iskeyword (alfabetyczne, cyfry i znak podkreślenia)

2) inne znaki niedrukowalne (symbole)

3) białe znaki

każdorazowym naciśnięciu w przechodzi do następnej grupy 1 lub grupy 2. Chciałbym go dostosować tak, że tylko przechodzi do następnej grupy 1, przeskakując "symbol wo rds ".

Co prawie działa to:

nnoremap w /\k\+<CR>

który używa klasy iskeyword znaków \k. Ale to jest brzydkie, ponieważ symuluje mnie przeprowadzanie wyszukiwania, które zmienia moje wyróżnianie, przerywa moją historię wyszukiwania i kto wie, co jeszcze. Czy istnieje sposób, aby uczynić tę pracę "czysto", jak zwykle jest to polecenie w?

+0

Nie podążam za tym, co chcesz. Czy 'W' pomaga? Ma dwie grupy znaków: biały i biały, więc zawsze idzie do pierwszego znaku po następnych białych znakach. –

+0

Nie, to nie działa: 'W' zagrywa znaki symboli wraz ze znakami alfabetu. Chodzi mi tylko o to, aby symbole z białymi znakami zostały zbite, aby symbole były pomijane przy jednoczesnym tworzeniu granic wyrazów. – Ein

Odpowiedz

0

I nie może być dużo pomocy tutaj .. I nawet nie wiem, co \k oznacza w tym kontekście, ale można rozwiązać dwóch palących problemów przedstawić:

nnoremap w /\k\+<CR>:nohl<CR>:call histdel("search", -1)<CR> 

Jest brzydki i podświetlanie maja migotanie, ale może to wskaże ci właściwy kierunek.

3

Myślę, że szukasz operator pending mode, a.k.a xmap, smap i rodziny.

Zrobiłem kilka przykładów tych in other answers on SO:

Najbardziej istotne Przykładem może być

Znajdziesz tu również kilka technik, które są podobne i mogą być przydatne dla ty

+1

Pamiętam ten. Świetna odpowiedź. – lucapette

+0

Uczynienie z niego właściwego ruchu dla operatorów jest wspaniałe, a odpowiedź SO nauczyła mnie kilku nowych rzeczy. Ale to, co naprawdę czyni mnie nieszczęśliwym, to symulowanie "mnie przeprowadzania wyszukiwania", aby się poruszać, i musiałbym to zrobić, aby zdefiniować moje odpowiadające 'xmap' i' omap'. – Ein

+0

@Nuno: Dla przypomnienia, doktorzy mówią, że przeszukiwanie od wewnątrz vimscript (funkcja) ** nie ** wpływa na twój "bieżący" wzorzec wyszukiwania, historię wyszukiwania itp. (W każdym razie, jakiekolwiek inne efekty uboczne mogą być po prostu przywrócone w ta sama funkcja) – sehe