Question Comment passer à la lettre majuscule suivante?


En vim je peux utiliser f suivi d'un caractère pour passer à l'occurrence suivante de ce caractère sur la ligne en cours. Par exemple, si j'ai les éléments suivants (la position du curseur est marquée avec |):

m|akeBinExprNode = undefined

je peux utiliser fB déménager à B et dtE supprimer jusqu'à avant le E, me laissant avec:

make|ExprNode = undefined

Je me demande s'il est possible de faire cela sans impliquer le caractère exact, c’est-à-dire une sorte de mouvement qui signifie "passer à la lettre majuscule suivante" et / ou "aller à droite avant la lettre majuscule suivante".


28
2017-10-31 18:57


origine


Réponses:


J'ai trouvé ça vim tip pour vous déplacer dans CamelCaseWords cela pourrait être utile:

" Use one of the following to define the camel characters.
" Stop on capital letters.
let g:camelchar = "A-Z"
" Also stop on numbers.
let g:camelchar = "A-Z0-9"
" Include '.' for class member, ',' for separator, ';' end-statement,
" and <[< bracket starts and "'` quotes.
let g:camelchar = "A-Z0-9.,;:{([`'\""
nnoremap <silent><C-Left> :<C-u>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%^','bW')<CR>
nnoremap <silent><C-Right> :<C-u>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%$','W')<CR>
inoremap <silent><C-Left> <C-o>:call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%^','bW')<CR>
inoremap <silent><C-Right> <C-o>:call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%$','W')<CR>
vnoremap <silent><C-Left> :<C-U>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%^','bW')<CR>v`>o
vnoremap <silent><C-Right> <Esc>`>:<C-U>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%$','W')<CR>v`<o

5
2017-10-31 19:04



Je recommanderais le script suivant: camelcasemotion. Il vous permet de sauter, de supprimer les mots de casse de chameau en utilisant ,+ navigation normale [w, b, e] etc ...


14
2017-11-08 12:50



Lorsque je cherchais cela, je serais heureux d’avoir la solution "native": entrez simplement en mode commande:

/\u

qui signifie "rechercher une lettre majuscule". Après cela, il suffit de passer entre les majuscules avec n et N (shift + n).


13
2017-11-22 10:22



Wilhelmtell's la réponse fonctionnera à moins que 'ignorecase' le paramètre est défini. Si 'smartcase' est activé ou 'noignorecase' alors ça va.

Cependant, un modèle qui peut remplacer [A-Z] est \u (voir :help /\u ou plus globalement :help pattern). Par conséquent, vous pouvez remplacer votre mappage par:

:nnoremap <leader>C /\u<CR>:nohlsearch<CR>

6
2017-10-31 20:31



:nmap <leader>C /[A-Z]<CR>:nohlsearch<CR>

Puis en mode normal <leader>C (qui signifie par défaut \C)


5
2017-10-31 19:01