2012-03-02 11 views
5

quanto ho capito, w riconosce confini di parola di testo suddivisione in 3 gruppi:In vim, come faccio a creare un movimento di confine parola personalizzato?

1) personaggi che sono specificate nella cornice iskeyword (alfabetici, cifre, e di sottolineatura)

2) altri caratteri non stampabili (simboli)

3) caratteri di spaziatura

Ogni volta che si preme w va al gruppo 2. prossimo gruppo 1 o mi piacerebbe personalizzare così si va solo al gruppo successivo 1, saltando "simbolo wo RDS".

Che quasi funziona è questo:

nnoremap w /\k\+<CR>

che utilizza la classe iskeyword carattere \k. Ma è brutto perché mi simula eseguendo una ricerca, che cambia la mia messa in risalto, ingombra la mia cronologia delle ricerche e chissà cos'altro. C'è un modo per rendere questo lavoro "pulito" come il comando w normalmente?

+0

Non seguo esattamente quello che vuoi. 'W' aiuto? Ha due gruppi di caratteri: spazi bianchi e non spazi bianchi, quindi va sempre al primo carattere dopo lo spazio vuoto successivo. –

+0

No, non funziona affatto: 'W' annoda i caratteri simbolo insieme ai caratteri alfabetici. Quello che voglio è, in effetti, ammassare i simboli con spazi bianchi, in modo che i simboli vengano saltati mentre si creano ancora dei confini di parole. – Ein

risposta

0

io non può essere di grande aiuto qui .. io non so nemmeno cosa \k significa in questo contesto, ma è possibile risolvere i due problemi immediati che si presenteranno:

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

è brutto e l'evidenziazione maggio sfarfallio, ma forse questo ti indicherà la giusta direzione.

3

Penso che stiate cercando operator pending mode, a.k.a xmap, smap e famiglia.

ho fatto alcuni esempi di questi in other answers on SO:

L'esempio più rilevante potrebbe essere

Troverete anche alcune tecniche che sono simili e che potrebbero essere utili per you

+1

Lo ricordo. Bella risposta. – lucapette

+0

Rendersi un buon movimento per gli operatori è fantastico, e la risposta di SO mi ha insegnato alcune cose nuove. Ma ciò che mi rende davvero infelice è simulare che "io eseguo una ricerca" per spostarmi, e dovrei farlo per definire i miei corrispondenti 'xmap' e' omap'. – Ein

+0

@Nuno: Per la cronaca, i documenti dicono che la ricerca dall'interno di una vimScript (funzione) ** non ** influenza il tuo modello di ricerca "attuale", la cronologia delle ricerche ecc. (Comunque, qualsiasi effetto secondario _other_ potrebbe semplicemente essere ripristinato in quella stessa funzione) – sehe

Problemi correlati