在 PHPStorm 中重命名文件而不重构
Posted
技术标签:
【中文标题】在 PHPStorm 中重命名文件而不重构【英文标题】:Rename file in PHPStorm without refactoring 【发布时间】:2011-12-10 15:56:32 【问题描述】:如何在 phpStorm 中快速重命名文件名无需重构?即使在我刚刚创建了文件之后,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$
点击Ok
、Apply
之后,您可以在文件菜单中看到新项目
当你点击rename
时会打开对话框
在某些情况下 phpstorm 重命名后不会同步文件,因此在文件所在的路径中需要单击文件菜单中的“同步'路径'”
【讨论】:
【参考方案3】:默认为 Shift-F6。对于不重构,请禁用弹出窗口中的复选框。
我想像 Windows 默认一样使用 F2 进行文件重命名。
您可以为 F2 创建一个快捷方式。前往:
-
文件
设置
键盘映射
搜索“重命名”
双击“重构 -> 重命名”
点击“键盘快捷键”
按 F2
好的
编辑
如果不能立即生效,重启 PHPStorm。
【讨论】:
+1 这就是我来这里的原因。谷歌带来了我,但我没有失望。 F2 对我来说是预期的快捷方式。谁听说过 Shift+f6 用于重命名操作? 奇怪,不知道为什么这个快捷方式需要重启,而其他的不需要。 我做了所有这些但忘记重新启动 phpstorm .. :(【参考方案4】:我快速重命名文件的技巧是单击文件名并按Shift-F6。将打开一个对话框,您可以立即键入文件的新名称,然后按回车键以完成重命名。
我发现这种技术很直观,因为您不必将鼠标移动到对话窗口、输入新名称或单击任何内容进行确认。只要您所做的只是一个您知道是安全的重命名,您只需输入即可。
我也喜欢此功能,因为您仍然可以选择在更改之前快速预览更改。在那些情况下,当您重构可能对应用程序的其余部分产生影响的东西时,您仍然可以启用“搜索引用”和/或“在 cmets 和字符串中搜索”以获取整个 enchilada。 (我默认禁用这些选项。)
我同意你的观点,右键单击文件名,向下滚动到 Refactor,选择 Rename,然后输入新名称很麻烦,尤其是在启用安全检查的情况下。我发现 PhpStorm 开发人员似乎了解这些类型的问题,并且通常也想到了一种“更快的方法”来做事。
【讨论】:
还可以使用助记符(Alt +如果不进行重构,您将无法做到这一点,尽管Refactor
| Rename
通常很快,您可以禁用选项来搜索参考。
【讨论】:
有时我会创建一个新文件,然后我想更改它的名称。虽然文件刚刚创建,但重构器报告了很多对它的引用?! 如果您在 cmets 中搜索错误引用,并且文件名是一些常用词,则可以找到错误引用,因此只需在“重命名”对话框中禁用这两个复选框。以上是关于在 PHPStorm 中重命名文件而不重构的主要内容,如果未能解决你的问题,请参考以下文章
在 Entity Framework Core 中重命名外键而不删除数据
如何在 Visual Studio 中重命名方法并保留历史记录?
如何删除一列并创建一个新列而不是在 EF Core 中重命名?