Cada vez después de cargar un cscope.out en Vim, necesito cambiar el "pwd" de Vim al mismo directorio donde está el archivo cscope.out, lo que podría deberse a que el cscope usa la ruta relativa al generar el archivo de etiqueta. Entonces, si hay una forma de forzar que cscope use la ruta absoluta en su archivo de etiqueta - cscope.out, entonces será independientemente de si la pwd de su sesión de Vim es la misma que el directorio en el que se encuentra el archivo cscope.out.¿Cómo dejar que cscope use la ruta absoluta en el archivo cscope.out?
Respuesta
Al importar cscope.out, se puede suministrar el prefijo, es decir
:cscope add /path/to/cscope.out /path/to/src/code
A continuación, sus búsquedas a su vez a como:
Cscope Tag: foobar
# line filename/context/line
1 21 /path/to/src/code/foobar_file.c
@Aaron H. es correcto.
Por mi configuración de E utiliza el plugin cscope_maps.vim y modificar las siguientes líneas:
40 " add any cscope database in current directory
41 if filereadable("/usr/project/cscope.out")
42 cs add /usr/project/cscope.out /usr/project
43 " else add the database pointed to by environment variable
44 elseif $CSCOPE_DB != ""
45 cs add $CSCOPE_DB
46 endif
Donde "/ usr/proyecto" es la ubicación del archivo cscope.out y la ruta absoluta Quiero utilizar.
El cscope tutorial tiene una solución muy simple para este problema:
11.Try estableciendo la variable de entorno
$CSCOPE_DB
para que apunte a una base de datos Cscope se crea, por lo que no siempre tendrá que lanzar con Vim en el mismo directorio que la base de datos. Esto es particularmente útil para los proyectos donde el código se divide en múltiples subdirectorios. Nota: para que esto funcione, se debe construir la base de datos con los nombres de ruta absolutos: cd a/y hacerfind /my/project/dir -name '*.c' -o -name '*.h' > /foo/cscope.files
A continuación, ejecute Cscope en el mismo directorio que el archivo cscope.files (o utilizar 'cscope /foo/cscope.files -i), a continuación, establezca y exporte la variable $ CSCOPE_DB, que apunta al archivo que resulta cscope.out):
cd /foo cscope -b CSCOPE_DB=/foo/cscope.out; export CSCOPE_DB
(el último comando anterior es para Bourne/Korn/Bash shells: Olvidé cómo exportar variables en shells basados en csh, sin ce los evito como la peste).
Ahora debería poder ejecutar 'vim -t foo' en cualquier directorio en su máquina y hacer que Vim salte directamente a la definición de 'foo'. Tiendo a escribir pequeños scripts de shell (que solo definen y exportan CSCOPE_DB) para todos mis proyectos diferentes, lo que me permite cambiar entre ellos con un comando simple 'source projectA' .
Usted puede crear sus cscpoe.files utilizando rutas absolutas a sus archivos, aquí está mi scripts para generar mis bases de datos cscope
#!/bin/sh
find $PWD -name '*.[ch]' -exec echo \"{}\" \; | sort -u > cscope.files
cscope -bvq
cscope.files A continuación, sólo vim y tal vez: cs añadir cscope.out , aunque mi complemento cscope hace eso automáticamente. Luego busco los archivos que me interesan y salgo a ellos con gf.
Puede pedirle a vim que interprete las rutas en cscope.relativo a la ubicación del archivo cscope.out configurando la opción cscoperelative
. De :help csre
:
Si 'cscoperelative' se fija, a continuación, en ausencia de un prefijo dado a cscope (prefijo es el argumento de la opción -P de cscope), nombre base de ubicación cscope.out (por lo general el directorio raíz del proyecto) se usará como el prefijo para construir una ruta absoluta. El valor predeterminado es apagado. Nota: Esta opción solo es efectiva cuando cscope (cscopeprg) es inicializado sin una ruta de prefijo (-P).
Ejemplos
: conjunto CSRE
: Conjunto nocsre
Esto realmente debería ser la respuesta aceptada ya que desde una perspectiva vim + cscope es, de lejos, la solución más fácil. ¡Gracias por su respuesta! – janjust
Nota: puesto que no soy lo suficientemente alto para añadir comentarios todavía: Aaron y de Neha respuestas fueron útiles para mí para aprender más acerca de la todo el sistema, pero la mejor y más directa respuesta a la pregunta está actualmente en 3er lugar y es de Shayan.
El asker preguntaba más sobre la obtención de nombres de rutas absolutos por cscope, no trabajando en ello utilizando (el muy capaz y poderoso) vim.
Nota2: Hay otra forma de hacer un solo cambio en vim y lograr lo mismo que lo que hizo Neha.
:set cscopeprg=cscope -P path_to_relative_base
me gusta Neha es mejor, pero de esta manera se acerca más a la modificación cscope en lugar de la configuración de vim, si esto es lo que desea. Y esta es la única forma que le permite mover el cscope db a cualquier parte.
- 1. cómo obtener la ruta absoluta para el archivo symlink?
- 2. ¿Cómo obtener la ruta absoluta del archivo desde la ruta base y relativa que contiene ".."?
- 3. ¿Cómo dejar que TortoiseHg (Mercurial) en Windows use el archivo de clave privada generado (por Puttygen)?
- 4. Obtenga la ruta absoluta del archivo editado actualmente en Eclipse
- 5. Convierta la ruta absoluta a la ruta relativa en el archivo por lotes
- 6. Ruta relativa a la ruta absoluta en Elisp
- 7. WIN32_FIND_DATA - Obtener la ruta absoluta
- 8. Cómo convertir ruta relativa a la ruta absoluta en Unix
- 9. Ruta de archivo absoluta a URL relativa
- 10. Cómo obtener una ruta de archivo absoluta en Python
- 11. Ruta relativa a la ruta absoluta en C#?
- 12. Ruta absoluta PHP en requireonce
- 13. gcc/gdb: ¿Cómo incrustar la ruta absoluta al archivo fuente en la información de depuración?
- 14. descubriendo la ruta absoluta a un archivo de python
- 15. Obtención de la ruta de acceso absoluta de un archivo
- 16. En un archivo MAKE, ¿cómo obtener la ruta relativa de una ruta absoluta a otra?
- 17. Ruta absoluta y ruta relativa
- 18. Ruta de archivo absoluta para el script java
- 19. Java: obtenga la ruta absoluta del servidor
- 20. ¿Cómo obtener la ruta de acceso absoluta del archivo o directorio, que * no * existe?
- 21. Abrir archivo con fopen, ruta absoluta dada en Windows
- 22. Ruta relativa a la ruta absoluta en VB.NET
- 23. ruta absoluta relativa perl
- 24. UIWebView URLbase y la ruta absoluta
- 25. ¿Cómo incluir archivos PHP que requieren una ruta absoluta?
- 26. URL absoluta de la ruta relativa
- 27. ¿Cómo obtener la ruta absoluta de un archivo mediante programación con out realpath() en Linux?
- 28. ¿Cómo dejar que Mercurial ignore todo excepto el archivo * .cs?
- 29. ¿Cómo obtener la URL del archivo de la ruta absoluta en Delphi?
- 30. Obtener ruta absoluta con boost :: filesystem :: ruta
también, ejecute 'export CSCOPE_DB = $ (pwd)/cscope.out' en el mismo directorio que el script ejecuta – Paschalis