【问题标题】:Rename file in PHPStorm without refactoring在 PHPStorm 中重命名文件而不重构
【发布时间】:2011-12-10 15:56:32
【问题描述】:

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

【问题讨论】:

    标签: php file rename phpstorm


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这适用于 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,点击
      并填写如下表格

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

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

      当你点击rename时会打开对话框

      在某些情况下 phpstorm 重命名后不会同步文件,因此在文件所在的路径中需要单击文件菜单中的“同步'路径'”

      【讨论】:

        【解决方案3】:

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

        我想像 Windows 默认一样使用 F2 进行文件重命名。

        您可以为 F2 创建一个快捷方式。前往:

        1. 文件
        2. 设置
        3. 键盘映射
        4. 搜索“重命名”
        5. 双击“重构 -> 重命名”
        6. 点击“键盘快捷键”
        7. 按 F2
        8. 好的

        编辑

        如果不能立即生效,重启 PHPStorm。

        【讨论】:

        • +1 这就是我来这里的原因。谷歌带来了我,但我没有失望。 F2 对我来说是预期的快捷方式。谁听说过 Shift+f6 用于重命名操作?
        • 奇怪,不知道为什么这个快捷方式需要重启,而其他的不需要。
        • 我做了所有这些但忘记重新启动 phpstorm .. :(
        【解决方案4】:

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

        我发现这种技术很直观,因为您不必将鼠标移动到对话窗口、输入新名称或单击任何内容进行确认。只要您所做的只是一个您知道是安全的重命名,您只需输入即可。

        我也喜欢此功能,因为您仍然可以选择在更改之前快速预览更改。在那些情况下,当您重构可能对应用程序的其余部分产生影响的东西时,您仍然可以启用“搜索引用”和/或“在 cmets 和字符串中搜索”以获取整个 enchilada。 (我默认禁用这些选项。)

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

        【讨论】:

        • 还可以使用助记符(Alt + ) 快速启用/禁用复选框。
        【解决方案5】:

        如果不进行重构,您将无法做到这一点,尽管Refactor | Rename 通常很快,您可以禁用选项来搜索参考。

        【讨论】:

        • 有时我会创建一个新文件,然后我想更改它的名称。虽然文件刚刚创建,但重构器报告了很多对它的引用?!
        • 如果您在 cmets 中搜索错误引用,并且文件名是一些常用词,则可以找到错误引用,因此只需在“重命名”对话框中禁用这两个复选框。
        猜你喜欢
        • 2018-10-15
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多