Vim no proporciona un objeto de texto de palabra CamelCase de forma predeterminada, por lo que tendremos que crearlo nosotros mismos . La buena nueva es que no necesitamos reinventar la rueda desde un plugin ya existe y se puede utilizar como base: camelCaseMotion
Este script define movimientos ,w
, ,b
y ,e
(similar a w
, b
, e
), que no se mueven en palabras (hacia adelante/hacia atrás), sino en Camel-wise; es decir, límites de palabras y letras mayúsculas. El problema es que no define un objeto de texto similar a iw
para seleccionar una palabra completa. Así que vamos a crear :
Para completar, un objeto de texto necesita dos definiciones: una para el modo visual y otra para el modo de operador pendiente. Aquí están nuestras definiciones (a añadir a la .vimrc
):
vmap ,i <Esc>l,bv,e
omap ,i :normal v,i<CR>
Como se puede ver que hacemos un uso de los ,b
y ,e
movimientos definidos por el plugin.
La primera definición permite escribir ,i
cuando estamos en modo visual y seleccionará la "palabra interna de camelCase". (El movimiento l
es una solución alternativa para obtener siempre la palabra se encuentra el cursor. De otro modo se obtiene la anterior cuando el cursor está en la primera letra de una palabra)
La segunda definición utiliza el primer uno a permitir que operadores como d
o c
trabajo con ,i
Después instalamos el plugin y hemos añadido las definiciones de nuestra .vimrc
que podemos hacer lo que quería.Por ejemplo si tomo este ejemplo:
DefaultHandlerWord
Si mi cursor está en la letra n
de Handler
puedo usar:
,e
para ir a la última letra de Handler
,b
ir a la primera letra de Handler
,w
para ir a la primera letra de Word
d,i
eliminar Handler
y obtener sólo DefaultWord
c,i
eliminar Hanlder
y tener la oportunidad de reemplazarlo por otra palabra
posible duplicado de [¿Cómo puedo configurar Vim para que los comandos de movimiento incluirá guiones y CamelCase , pero la finalización los ignorará?] (http://stackoverflow.com/questions/1279462/how-can-i-configure-vim-so-that-movement-commands-will-include-underscores-and-c) (como se menciona en la respuesta de Luc, que creo que debería ser un comentario) – yshavit