En Intellij Idea, hay una característica. Digamos que he usado una variable myCamelCase
en algún lugar de mi código. Luego, si escribo mCC
y presiono Ctrl - Ingrese o alguna combinación de teclas similar, se expande a myCamelCase
. ¿Hay algo similar en Vim?CamelCase Expansion in Vim like Intellij Idea?
Respuesta
Bien, perdónenme por responder dos veces, pero como mi primer intento no fue el objetivo, tendré otra oportunidad. Esto es más complicado de lo que pensaba, pero posiblemente no tan complicado como lo he hecho (!).
Esto ahora se ha modificado para sugerir todos los nombres de variables coincidentes.
En primer lugar, aquí es una función para generar la abreviatura 'MCC' de la cadena 'myCamelCase':
function! Camel_Initials(camel)
let first_char = matchstr(a:camel,"^.")
let other_char = substitute(a:camel,"\\U","","g")
return first_char . other_char
endfunction
Ahora, he aquí una función que toma una abreviatura ('MCC') y escanea el búfer actual (hacia atrás desde la línea actual) para "palabras" que tienen esta abreviatura. se devuelve Una lista de todos los partidos:
function! Expand_Camel_Initials(abbrev)
let winview=winsaveview()
let candidate=a:abbrev
let matches=[]
try
let resline = line(".")
while resline >= 1
let sstr = '\<' . matchstr(a:abbrev,"^.") . '[a-zA-Z]*\>'
keepjumps let resline=search(sstr,"bW")
let candidate=expand("<cword>")
if candidate != a:abbrev && Camel_Initials(candidate) == a:abbrev
call add(matches, candidate)
endif
endwhile
finally
call winrestview(winview)
if len(matches) == 0
echo "No expansion found"
endif
return sort(candidate)
endtry
endfunction
A continuación, he aquí una función personalizada-realización que se lee la palabra bajo el cursor y sugiere los partidos devueltos por las funciones anteriores:
function! Camel_Complete(findstart, base)
if a:findstart
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '[A-Za-z_]'
let start -= 1
endwhile
return start
else
return Expand_Camel_Initials(a:base)
endif
endfunction
para hacer uso de esto, se debe definir el "completefunc":
setlocal completefunc=Camel_Complete
para usar finalización-modo de inserción, el tipo CTRL-XCTRL-T, pero por lo general asignar este a CTRL-L:
inoremap <c-l> <c-x><c-u>
Con este código en su vimrc que debe encontrar que escribir el mCC
seguido de CTRL-L hará el reemplazo esperado. Si no se encuentra una expansión coincidente, la abreviatura no cambia.
El código no es hermético, pero funciona en todos los casos simples que probé. Espero eso ayude. Avíseme si algo necesita esclarecimiento.
Hay un complemento para esto en Vim llamado vim-abolish. Usa el mapa crc
para expandir a camel case.
- 1. Debugging Android Widget In Intellij IDEA
- 2. .vimrc para el complemento vim de IntelliJ Idea
- 3. configuración de IntelliJ IDEA
- 4. IntelliJ IDEA - Nueva plantilla
- 5. Intellij IDEA autocompletado personalizado
- 6. Características ocultas IntelliJ IDEA
- 7. IntelliJ IDEA compare pestañas
- 8. IntelliJ IDEA: ¿Mover línea?
- 9. IntelliJ IDEA búsqueda global
- 10. IDEA intellij character support
- 11. Depuración JSP en IntelliJ IDEA
- 12. ¿Cómo puedo habilitar CamelCase? Vim Search
- 13. Ctrl-tab en IntelliJ IDEA
- 14. Intellij Idea - Eclipse Scrapbook equivalente
- 15. Notación húngara en Intellij IDEA
- 16. intellij idea ejecutar configuraciones backup
- 17. Encontrar anotaciones en IntelliJ IDEA
- 18. Intellij IDEA Can not Undo
- 19. Guardar acciones en IntelliJ IDEA
- 20. Ventana Actualizar proyecto, IntelliJ-idea
- 21. ¿Cómo puedo actualizar IntelliJ IDEA?
- 22. Eclipse para IntelliJ Idea Users
- 23. Intellij IDEA show javadoc automatically
- 24. IntelliJ IDEA aplicación android scala
- 25. Módulos IntelliJ IDEA y PlayFramework
- 26. IntelliJ community Perforce plug-in
- 27. Hippie finalización de código en IntelliJ IDEA?
- 28. Global snippets in vim
- 29. Python in Vim buffer?
- 30. Cláusula SQL Where con LIKE e IN
¡Increíble! Esto es todo lo que puedo decir. Todavía soy lo suficientemente codicioso/flojo como para pedirte más. Si hay más de una expansión posible: p. myCamelCase myCamelCart, el último es elegido. En cambio, ¿se puede hacer que se comporte como la finalización de la palabra clave Ctrl-P en vim? De nuevo, increíble! – dharm0us
¡Me alegra que funcionó! El manejo de múltiples coincidencias debería ser solo cuestión de obtener Expand_Camel_Initials() para devolver una lista de soluciones y luego configurar 'completefunc' para que pueda elegir entre ellas. Trataré de echarle un vistazo más adelante esta semana. –
De acuerdo, no fue tan doloroso como pensé ... He editado mi respuesta y ahora debería funcionar como lo desees. Avíseme si tiene algún problema (no he tenido la oportunidad de probarlo correctamente). –