Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

311
Views
Usando el comando vim gf con el alias del paquete web "@"

Usualmente uso Vuejs y Webpack con el carácter "@" para la resolución de archivos, así

 import MyComponent from "@/components/MyComponent.vue";

Sin embargo, no puedo usar el comando vim gf para moverme a este archivo.

E447: Can't find file "/components/MyComponent.vue" in path

Pasé un par de horas buscando en Google, jugando con la ruta vim e includeexpr . También probé un par de complementos, como vim-npr o vim-gotofile .

¿Alguien se ha encontrado con el mismo problema y ha encontrado una solución?

editar

Lo mejor que se me ocurrió hasta ahora es esto:

:set inex=substitute(v:fname,'^\\@\/','src/','')

lo encontré en otro hilo de stackoverflow donde estaban usando el carácter ~ para esto. Sin embargo, no funciona con @ . Me sale este error al intentar gf

E869: (NFA) Unknown operator '\@/'

Mi solución

Con la ayuda de @romainl, ahora tengo esta configuración tanto en after/ftplugin/vue.vim como en after/ftplugin/javascript.vim

 setlocal isfname+=@-@ setlocal includeexpr=substitute(v:fname,'^@\/','src/','')

¡Gracias por tu ayuda!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

En la pregunta vinculada, ~ se escapa porque ~ tiene un significado especial para el motor de expresiones regulares de Vim: "coincide con la última cadena sustituta dada".

Pero @ no es especial de ninguna manera, por lo que no es necesario escaparlo:

 setlocal includeexpr=substitute(v:fname,'^@\/','src/','')

Como habrás notado, hay otro problema. Vim usa :help 'isfname' para definir v:fname pero el valor de la opción no contiene el carácter @ de forma predeterminada, por lo que se deja fuera de v:fname . Dado que no hay @ en v:fname , el patrón en replace substitute() no coincide y terminamos con:

Cadena real v:fname Después includeexpr Salir
@/foo/bar.vue /foo/bar.vue /foo/bar.vue Extraviado

La solución es agregar @ a isfname :

 setlocal isfname+=@-@

lo que nos da:

Cadena real v:fname Después includeexpr Salir
@/foo/bar.vue @/foo/bar.vue src/foo/bar.vue Fundar

Probado para trabajar con $ vim -Nu NONE file.js

Ahora, las configuraciones anteriores son específicas del tipo de archivo, es mejor ponerlas en un ftplugin. Suponiendo que el tipo de filetype de sus búferes sea javascript , una ubicación adecuada sería:

 " on Unix-like systems ~/.vim/after/ftplugin/javascript.vim " on Windows %USERPROFILE%\vimfiles\after\ftplugin\javascript.vim

YMMV.


Tenga en cuenta que, en las respuestas a las preguntas vinculadas, ^\\~ es incorrecto y arroja un error E874 . El patrón correcto es ^\~ .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!