2012-03-08 10 views
5

En vim, ¿cómo puedo encontrar todas las apariciones de una variable en archivos en un directorio determinado?¿Cómo encontrar todas las apariciones de una variable en Vim?

Sé que vimgrep funciona a veces, pero solo busca texto y no funciona si otras clases tienen variables del mismo nombre y solo quiero la variable en una clase específica.

¿Qué debo hacer? ¿O debería obtener un IDE en su lugar?

+1

Sí, utilizar un IDE. Vim solo usa mecanismos básicos como expresiones regulares o búsqueda binaria: no entiende tu código como lo hace un IDE. – romainl

+0

¿Con qué idioma (s) trabajas? Las sugerencias 'cscope' son buenas para lenguajes tipo C, pero no tanto para otros AFAIK. –

Respuesta

11

¿Por qué le gustaría usar otro IDE cuando ya tiene uno? Vim es un IDE que es configurable y utilizable para diferentes idiomas ..

usted podría utilizar cscope a build a database de su código. Esta base de datos

  • permite la búsqueda de código para:
    • todas las referencias a un símbolo
    • definiciones globales
    • funciones llamadas por una función
    • las funciones de llamada una función
    • cadena de texto
    • expresión regular pat golondrina de mar
    • un archivo
    • archivos incluyendo un archivo

Otras características de Cscope:

  • Maldiciones basada (pantalla de texto)
  • Una base de datos de información es generado para búsquedas más rápidas y referencia posterior
  • El analizador difuso admite C, pero es lo suficientemente flexible como para ser útil para C++ y Java, y para usarlo como una 'base de datos grep' generalizada (¡úselo para buscar documentos de texto grandes!)
  • Tiene un modo de línea de comandos para inclusión en scripts o como backend en una GUI/frontend
  • Funciona con todos los sabores de Unix, además de la mayoría de los sistemas operativos controlados por monopolio.

Una vez creada la base de datos, se puede browse through los usos de las variables, funciones, etc.


Editar (un poco OT):
otra cosa fresca que es muy útil cuando se trabaja con Vim en código es el plugin taglist que utiliza Ctags:

La "Lista de variables" plug-in es un complemento de navegador de código fuente para Vim y proporciona una descripción general de la estructura de los archivos de código fuente y permite buscar de manera eficiente a través de archivos de código fuente para diferentes lenguajes de programación .

+0

Mucho mejor que vimgrep de hecho ... Estoy intentando ... – neuron

+0

+1 para que cscope sea increíble. Normalmente solo tengo una pestaña de terminal abierta para cscope a tiempo completo. – alesplin

+0

Ahora que he pasado un poco de tiempo con cscope, me parece que cscope no diferencia las variables del mismo nombre que pertenecen a diferentes clases. class_b :: var puede ser devuelto aunque solo estoy buscando class_a :: var. Estoy usando C++. ¿Estoy haciendo algo mal? – neuron

3

cscope ejemplo paso a paso

Ir al directorio base de su proyecto, y ejecutar:

cscope -Rb 

Esto genera un archivo cscope.out que contiene la información analizada. La generación es razonablemente rápida, incluso para grandes proyectos como el kernel de Linux.

vim Abrir y ejecutar:

:cs add cscope.out 
:cs find s my_func 

s es una regla mnemotécnica para symbol. Las otras consultas proporcionadas por cscope también son posibles.

La interfaz cscope (ouside del Vim) también tiene una consulta asignación de variables (subconjunto de ocurrencias de símbolos), que no parece Vim para ofrecer (?)

Esto añade una lista de las personas que llaman a la lista quickfix, que puede abrir con:

:copen 

Vaya a la línea que le interese y presione enter para saltar allí.

Consulte también:

Cuestiones relacionadas