Переименовать файл в PHPStorm без рефакторинга - PullRequest
23 голосов
/ 19 октября 2011

Как быстро переименовать имя файла без рефакторинга в PHPStorm? Даже после того, как я только что создал файл, PHPStorm занимает много времени для поиска в моих файлах его использования.

Ответы [ 4 ]

28 голосов
/ 25 октября 2011

Моя методика быстрого переименования файлов заключается в том, чтобы одним щелчком мыши щелкнуть имя файла и нажать Shift-F6 . Откроется диалоговое окно, и вы можете сразу же ввести новое имя файла и нажать return / enter, чтобы завершить переименование.

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

Мне также нравится эта функция, потому что у вас все еще есть возможность быстрого предварительного просмотра изменений до их внесения. И в тех случаях, когда вы проводите рефакторинг чего-либо, что может повлиять на остальную часть вашего приложения, вы все равно можете включить «Поиск ссылок» и / или «Поиск в комментариях и строках», чтобы получить всю энчиладу. (У меня эти опции отключены по умолчанию.)

Я согласен с вами, что щелкнуть правой кнопкой мыши имя файла, прокрутить вниз до Refactor, выбрать Rename и затем ввести новое имя громоздко, особенно если включены безопасные проверки. Я считаю, что разработчики PhpStorm, похоже, понимают эти типы проблем и обычно думают о «более быстром» способе сделать что-то еще.

11 голосов
/ 19 октября 2011

Вы не можете сделать это без рефакторинга, хотя Refactor | Rename обычно очень быстрый, и вы можете отключить опции для поиска ссылок.

4 голосов
/ 27 апреля 2016

По умолчанию Shift-F6 .Чтобы не выполнять рефакторинг, снимите флажки во всплывающем окне.

Я хотел использовать F2 для переименования файлов, например, по умолчанию в Windows.

Вы можете сделать ярлык для F2 .Перейдите к:

  1. Файл
  2. Настройки
  3. Карта клавиш
  4. Поиск "переименовать"
  5. Двойной щелчок "Refactor -> Переименовать"
  6. Нажмите" Сочетание клавиш "
  7. Нажмите F2
  8. ОК

РЕДАКТИРОВАТЬ

Еслион не работает сразу, перезапустите PHPStorm.

0 голосов
/ 26 марта 2017

Это будет работать для пользователей Linux.

Это зависит от zenity, поэтому сначала проверьте, установлен ли он в вашей системе,
запустить в консоли: zenity --version
Если он выдает что-то вроде 3.18.1.1 - тогда все в порядке.

Создать файл idea-rename.sh с содержанием ниже:

#!/usr/bin/env bash

FileDir="$1"
FileName="$2"

NewFileName="$(zenity --entry --title "Rename ${FileName}" --text "Please enter new name" --entry-text "${FileName}" --ok-label="Rename" 2>/dev/null)"

if [[ "${NewFileName}" != "" ]]; then
    if [[ -f "${FileDir}/${FileName}" ]]; then
        path="${FileDir}"
        name="${NewFileName}"

        if [[ "${NewFileName}" == *"/"* ]]; then
            IFS='/' read -ra newDirs <<< "$NewFileName"
            IFS='/' read -ra dirs <<< "$FileDir"

            last=$((${#newDirs[@]} - 1))
            path=""
            name="${newDirs[$last]}"
            unset 'newDirs[last]'

            if [[ "${NewFileName}" == *"./"* ]]; then
                for i in "${!newDirs[@]}"; do
                    dir="${newDirs[i]}"

                    if [[ "$dir" == ".." ]]; then
                        unset 'newDirs[i]'
                        j=$i

                        while [ $j -ge 0 ]; do
                            j=$(($j-1))

                            if [ $j -lt 0 ]; then
                                for (( k=${#dirs[@]}-1 ; k>=0 ; k-- )); do
                                    if [[ "${dirs[k]}" ]]; then
                                        echo 'dirs[k]'
                                        unset 'dirs[k]'
                                        break
                                    fi
                                done
                            elif [[ "${newDirs[j]}" ]]; then
                                echo 'newDirs[j]'
                                unset 'newDirs[j]'
                                break
                            fi
                        done

                    elif [[ "$dir" == "." ]]; then
                        unset 'newDirs[i]'
                    fi
                done
            fi

            for dir in "${dirs[@]}"; do
                if [[ "$dir" ]]; then
                    path="${path}/${dir}"

                    if [[ ! -d "$path" ]]; then
                        mkdir -m 0777 "$path"
                    fi
                fi
            done

            for dir in "${newDirs[@]}"; do
                if [[ "$dir" ]]; then
                    path="${path}/${dir}"

                    if [[ ! -d "$path" ]]; then
                        mkdir -m 0777 "$path"
                    fi
                fi
            done
        fi

        if [[ ! -f "${FileDir}/${NewFileName}" ]]; then
            mv "${FileDir}/${FileName}" "${path}/${name}"
        fi
    fi
fi

Откройте ваш Settings> Tools> External Tools, нажмите add button
и заполните форму как показано ниже

Adding tool

Имя: Rename
Группа: File
Программа: /bin/bash
Параметры: /path/to/idea-rename.sh $FileDir$ $FileName$
Рабочий каталог: $ProjectFileDir$

Нажмите Ok, Apply
После этого вы можете увидеть новый пункт в вашем меню файлов

Menu

При нажатии на rename откроется диалоговое окно

Rename dialog

После переименования в некоторых случаях phpstorm не синхронизирует файлы, поэтому в пути, где расположен ваш файл, нужно щелкнуть в меню «Синхронизировать« путь »»

Synchronize path menu

...