vim - para - Buscar etiquetas solo en el archivo actual
metadatos html para buscadores (3)
Estoy usando ": ta" para saltar a un método.
Por ejemplo, tengo dos clases llamadas A.java
y B.java
. Ambos tienen un método foo()
y B.java tienen otro método llamado fooBar()
. Luego abro A.java
y A.java
:ta foo
luego fooBar
y fooBar
dos finalizaciones: foo
y fooBar
. Pero lo que quiero saltar ahora es solo etiquetar en el archivo actual, no me gusta la etiqueta en otro archivo para mostrar.
Dependiendo de cuántas veces llame a sus métodos, un par de *
puede ser suficiente.
Sin usar etiquetas, gd
se puede usar para ir a la declaración local del método debajo del cursor. Tiendo a elegir la solución de menor tecnología por lo general, así que iría con esta.
Pero ctags
también puede generar etiquetas para un único archivo o para una selección arbitraria de archivos. Se puede hacer en unos pocos pasos, pero definitivamente no es tan sencillo como lo que está acostumbrado a hacer ...
Cree un archivo con el nombre (s) de los archivos que desea escanear. Digamos que se llama
files.txt
y está ubicado en la raíz de su directorio de trabajo.Genere su archivo de
tags
usando el argumento-L <file>
:ctags -L files.txt
.
En este punto, debe tener un archivo de tags
que contenga solo las etiquetas presentes en los archivos especificados en el paso 1.
Generar diferentes archivos de tags
para todo el proyecto y para archivos individuales puede ser útil aquí. Un guión corto que genere un archivo de tags
el nombre del archivo actual y lo haga el único origen de las tags
puede facilitar todo.
EDITAR
En realidad, TagList y TagBar no generan archivos de tags
. La salida del ctags <options>
que ejecutan se usa internamente y se analiza con todo tipo de expresiones regulares para filtrar por alcance o nombre de archivo o lo que sea.
No es exactamente una respuesta a su pregunta, pero parece que no hay forma de hacer exactamente lo que necesita, por lo tanto, le recomendaría lo siguiente: para su desarrollo de Java en Vim, intente con eclim .
Esta herramienta te ayuda a usar tu editor de texto favorito Vim con la potencia de un Eclipse (IDE). No puedo encontrar un análogo para completar la tabulación de :ta
, pero conozco un análogo inteligente para g]
: este es un comando :JavaSearchContext
. Puedes asignarlo a algo.
Por ejemplo, si tiene dos clases A
y B
, y tiene el método foo()
en cada clase, entonces g]
le preguntará cada vez que quiera saltar a foo()
, pero :JavaSearchContext
siempre saltará a la declaración adecuada de foo()
.
Por supuesto, hay muchas otras características.
Desafortunadamente esto no se puede hacer usando ctags . Ctags no respeta el contexto, es una lista pura de todas las "funciones" posibles. Intenta abrir un archivo de etiqueta con un editor (por ejemplo, vim) y verás que es solo una lista de "funciones" (en el caso de Java son "métodos"). Ejemplo:
getDesc src/com/redhat/rhn/internal/doclet/Handler.java /^ public String getDesc() {$/;" m class:Handler
getDoc src/com/redhat/rhn/internal/doclet/ApiCall.java /^ public String getDoc() {$/;" m class:ApiCall
Vim solo busca el archivo "tal cual" sin darle ningún contexto, solo busca una "función". Es capaz de buscar archivos, clases, métodos, enumeraciones, etc. El formato de las etiquetas se describe con más detalle aquí: http://ctags.sourceforge.net/FORMAT
En Vim tienes pocas posibilidades. Hay varios complementos que le dan a Vim cierta sensibilidad al contexto, pero no puede usar etiquetas para eso. Vim tiene una característica llamada OmniComplete y hay pocos complementos dedicados para Java. Luego puede usar Ctrl-X Ctrl-O para comenzar una completición. Te recomiendo que lo asigne a una clave diferente (tal vez Ctrl-Space si lo desea). Más información sobre los complementos de Java OmniComplete aquí:
Eclim ( http://eclim.org/ ) es muy completo, pero difícil de configurar (necesita ejecutar Eclipse en segundo plano). El script de JDE es más fácil y robusto ( http://www.vim.org/scripts/script.php?script_id=1213 ). Y tenga en cuenta que IntelliJ IDEA Community Edition (gratis) también tiene un plugin Vim muy agradable que es de uso gratuito. Pero te entiendo, Vim es Vim.
¡Buena suerte!