Рекурсивно искать один исходный файл и все файлы, импортированные / включенные в указанный файл, используя Sublime Text (или другой редактор) - PullRequest
0 голосов
/ 14 сентября 2018

Обзор

Я бы хотел рекурсивно искать строку в выбранном исходном файле. Таким образом, выбранный файл будет найден, и все файлы будут импортированы в выбранные файлы, а файлы импортированы в эти файлы и так далее.

Я использую Sublime Text 3 , поэтому ответы, ориентированные на это, будут идеальными, но любые ответы о том, как добиться этого в других редакторах, также будут высоко оценены.

Цель / Что я хочу сделать

В приведенном ниже коде из файла Footer.jsx. Я хотел бы найти любые вхождения строки "container" в Footer.jsx, а также в файлах, импортированных в Footer.jsx, и файлах, импортированных в эти импортированные файлы и т. Д.

В идеале, если можно указать рекурсивный поиск файлов в определенной папке (т. Е. Исходной папки, а не библиотек React), это было бы идеально. Таким образом, в приведенном ниже примере из импортированных файлов только footerStyle.jsx & GridContainer.jsx будет найден в файле Footer.jsx. Оба файла относятся к каталогу "src", который определен в файле .env с использованием NODE_PATH=./src

Что можно сделать в настоящее время и почему этого недостаточно

В настоящее время я могу искать один файл (Ctrl + F), несколько файлов или все файлы (Ctrl + Shift + F), но не один файл и все файлы, импортированные / включенные в этот файл рекурсивно.

Я мог бы вручную добавить импортированные файлы в Footer.jsx в список файлов для поиска , но для этого потребовалось бы вручную рекурсивно просматривать импортированные файлы и файлы, импортированные в эти файлы, и т. Д. на достаточную глубину и добавьте все эти файлы в список поиска. Это, конечно, может стать очень трудоемким. Я просто хотел бы знать, существуют ли какие-либо инструменты для этого.

/* eslint-disable */
import React from "react";
// nodejs library to set properties for components
import PropTypes from "prop-types";
// nodejs library that concatenates classes
import classNames from "classnames";
// @material-ui/core components
import withStyles from "@material-ui/core/styles/withStyles";
import List from "@material-ui/core/List";
import ListItem from "@material-ui/core/ListItem";
// @material-ui/icons
import Favorite from "@material-ui/icons/Favorite";

import footerStyle from "assets/jss/material-kit-pro-react/components/footerStyle.jsx";
import GridContainer from "components/Grid/GridContainer.jsx";

function Footer(props) {
  const { children, content, classes, theme, big, className } = props;
  const themeType =
    theme === "transparent" || theme == undefined ? false : true;
  const footerClasses = classNames({
    [classes.footer]: true,
    [classes[theme]]: themeType,
    [classes.big]: big || children !== undefined,
    [className]: className !== undefined
  });
  const aClasses = classNames({
    [classes.a]: true
  });

  return (
    <footer className={footerClasses}>
      <div className={classes.container}>
        {children !== undefined ? (
          <div>
            <div className={classes.content}>{children}</div>
            <hr />
          </div>
        ) : (
          " "
        )}
        {content}
        <div className={classes.clearFix} />
      </div>
    </footer>
  );
}

Footer.propTypes = {
  classes: PropTypes.object.isRequired,
  theme: PropTypes.oneOf(["dark", "white", "transparent"]),
  big: PropTypes.bool,
  content: PropTypes.node.isRequired
};

export default withStyles(footerStyle)(Footer);

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Vim имеет функцию под названием «включить поиск», которая делает именно это: :help include-search.Возможно, потребуется немного настроить, особенно для JavaScript и JSX, и немного потренироваться, но это того стоит.

[d - Показать определение слова под курсором:

Show definition of current word

[D - Показать список возможных определений foo:

Show list of possible definitions of 'foo'

gf - перейти к файлу под курсором:

Go to file under the cursor

[<C-d> - перейти к определению слова под курсором:

Go to definition of word under the cursor

:ilist /change - Найти все вхождения слова, начинающиеся с change:

Find all occurrences of word starting with 'change'

0 голосов
/ 14 сентября 2018

Я не думаю, что есть какой-либо способ динамически включать пути к вашим определениям включений из основного файла.Возможно, вы могли бы создать плагин, который анализирует файл, извлекает значения импорта и затем заполняет поля поиска.

Выберите меню Найти> Найти в файлах , внизу появится форма:

  • Найти:
  • Где:
  • Заменить:

В Where просто введите разделенный запятыми список ссылок на файлы при импорте.

Where: path / to / file1.jsx, path / to / file2.js, path / to / more / file * .js

Это ограничит ваше значение Find значениемэти файлы.

...