Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

317
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda