¿Hay alguna manera de obtener el gf
comando de vim (o algo similar) para reconocer un +{cmd}
argumento para las rutas de archivo?
Se puede iniciar vim e ir directamente a un término de búsqueda haciendo:
$ vim +/coding_effort ~/project/file
Del mismo modo, en modo comando puede hacer:
:e +/coding_effort ~/project/file
A menudo tomo notas y me refiero a otros archivos como este:
For more info see +/coding_effort ~/project/file where there's a detailed discussion.
Me encantaría poder seleccionar +/coding_effort ~/project/file
, escribir algo parecido gf
y hacer que vim haga lo correcto.
key-bindings
command-line
search
Oliver Taylor
fuente
fuente
Respuestas:
No, el primer problema es que el espacio necesario entre el comando y el nombre de archivo no es parte de la
isfname'
opción ' , y agregarlo significaría que los bordes del archivo no podrían reconocerse en absoluto. Debería usar siempre una selección visual (tanto de comando como de nombre de archivo) o implementar un análisis personalizado en unagf
sobrecarga de comandos.En segundo lugar, el incorporado
gf
no reconoce la+{cmd}
sintaxis, por lo que realmente no hay forma de implementar su propia asignación personalizada. Esto es ciertamente posible (usando funciones comoexpand('<cfile>')
,getline()
etc.), pero probablemente tome algunas líneas de la función Vimscript.Si elige una sintaxis diferente (
filename:+command
), puede mantener losgf
comandos originales e implementar la división en un:autocmd
, similar a lo que hace el muy relacionado archivo: plugin de líneafilespec:linenumber
).fuente
Aquí hay una función que debería replicar el
gf
comportamiento incorporado , y también busca trabajos que comiencen y+
luego pasen a:edit
Los comentarios deberían explicar lo que hace la función con más detalle ... Escribí esto en el tren la mañana, y (obviamente) no lo probé extensamente ;-)
fuente
Una opción sería (suponiendo que
+cmd file/path
se selecciona) para tirar la selección a un registro, luego insertar ese registro en el símbolo del sistema. Hice esto con el siguiente mapeo:vnoremap gsf "0y:e <c-r>0<cr>
fuente
Esta notación funciona (
file name
+trailing :
+/ pat /
)con función y mapeo a continuación.
fuente