在PHPStorm中重命名文件而不进行重构

时间:2011-10-19 06:19:34

标签: php file rename phpstorm

如何在PHPStorm中快速重命名文件名而无需重构?即使在我刚刚创建文件之后,PHPStorm也需要很长时间来搜索我的文件以供其使用。

5 个答案:

答案 0 :(得分:28)

我快速重命名文件的方法是单击文件名并按 Shift-F6 。将打开一个对话框,您可以立即键入文件的新名称,然后单击return / enter以完成重命名。

我发现这种技术很直观,因为必须将鼠标移动到对话框窗口,键入新名称或单击任何内容进行确认。只要你所做的只是你知道的重命名是安全的,你只需输入它就可以了。

我也喜欢这个功能,因为您仍然可以选择在更改之前快速预览更改。在您重构某些可能对应用程序其他内容产生影响的情况下,您仍然可以启用“搜索引用”和/或“在注释和字符串中搜索”以获取整个辣酱玉米饼馅。 (我默认禁用这些选项。)

我同意您右键单击文件名,向下滚动到Refactor,选择重命名,然后输入新名称很麻烦,尤其是在启用了安全检查的情况下。我发现PhpStorm开发人员似乎理解这些类型的问题,并且通常也想到了“更快的方式”来做事。

答案 1 :(得分:11)

尽管Refactor |,但如果没有重构,你就无法做到Rename通常非常快,您可以禁用搜索引用的选项。

答案 2 :(得分:3)

默认为 Shift-F6 。如果不重构,请禁用弹出窗口中的复选框。

我想使用 F2 进行文件重命名,例如Windows默认。

您可以为 F2 创建快捷方式。转到:

  1. 文件
  2. 设置
  3. 键盘映射
  4. 搜索"重命名"
  5. Doubleclick" Refactor - >重命名"
  6. 点击"键盘快捷键"
  7. 按F2
  8. 确定
  9. 修改

    如果它不能立即起作用,请重新启动PHPStorm。

答案 3 :(得分:0)

这适用于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&gt; Tools&gt; External Tools,点击add button
填写表格如下

Adding tool

姓名:Rename
组:File
计划:/bin/bash
参数:/path/to/idea-rename.sh $FileDir$ $FileName$
工作目录:$ProjectFileDir$

点击OkApply
之后,您可以在文件菜单中看到新项目

Menu

单击rename将打开对话框

Rename dialog

在某些情况下重命名后,phpstorm不会同步文件,因此在路径中找到您的文件需要在文件菜单中单击&#34;同步&#39;路径&#39;&#34;

Synchronize path menu

答案 4 :(得分:0)

还有一个可用选项,右键单击文件,选择“在资源管理器中显示”,然后在Windows资源管理器中按F2重命名文件。它不会重构或影响项目中的任何其他文件。