ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

FastSwitch

papaDoc 所有

Sublime Text 2插件。用于在文件间切换

详细信息

  • 2017.06.08.13.33.10
  • github.com
  • github.com
  • 7年前
  • 2小时前
  • 11年前

安装次数

  • 总数 734
  • Win 415
  • Mac 152
  • Linux 167
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

README

源码
raw.githubusercontent.com

FastSwitch

Sublime Text 2/3插件。用于在文件间切换

具有指定语法的文件将切换到具有相同基本名但具有不同用户定义扩展名的文件。将在用户定义的目录列表中搜索该文件。第一个满足条件的文件将是Sublime Text 2/3将切换到的文件。

如果使用此快速切换算法找不到文件,则将遍历路径。如果遍历的路径包含用户定义目录的子字符串,则将搜索用于切换的文件。

2017/06/08

新功能: - 如果在提供的路径中找不到文件,将使用基于gmatte11/sublime-text-switch-file在github上的工作的新算法遍历路径,并在用户定义目录的子字符串中搜索路径。这较慢,但可以找到更多,而不会提供太多的路径。

2015/03/21

新功能: - 现在可以在设置中指定前缀的情况下切换到具有不同前缀的文件。
前缀从文件名中删除,就像扩展名一样,并添加其他行的设置中的前缀和扩展名。
参见以下示例6和9。 - 如果设置中有超过两行,则可以在超过两个文件之间循环。 >BR> 参见以下示例7和9

以下是一个设置示例

// For the settings you define the syntax for which the extension and directory applies
// "syntax_X": [
//               [["ext_A1, ext_A2"], ["directory_A1", directory_A2]],
//               [["ext_B1", "ext_B2"], ["directory_B1", "directory_B2"]]
//             ]
// N.B. The "syntax_X" must be the string found in the lower right corner if the SublimeText 2/3
// Example: "Plain Text", "C++". "Python", "Markdown"
//
// settings with the new feature:
// "syntax_Y": [
//               [["ext_A1, ext_A2"], ["directory_A1", directory_A2], {"prefixes": ["prefix_A1_", "prefix_A2_"]}],
//               [["ext_B1", "ext_B2"], ["directory_B1", "directory_B2"], {"prefixes": ["prefix_B_"]}],
//               [["ext_C1"], ["directory_C1", ""]]
//             ]
// N.B. The {"prefixes": ["prefix_A1", "prefix_A2"]} is optional and can be ommitted
//
//
// With the above settings when in syntax_X (Ex C++) and you are currently in the file:
//     .../foo/bar/directory_A1/file.ext_A1
//
// using the fastswitch pluging then the pluging will try to open the file:
//     foo/bar/directory_B1/file.ext_B1
//     foo/bar/directory_B1/file.ext_B2
//     foo/bar/directory_B2/file.ext_B1
//     foo/bar/directory_B2/file.ext_B2
//
//
// With the above settings when in syntax_Y and you are currently in the file:
//     .../foo/bar/directory_A1/prefix_A1_file.ext_A1
//
// using the fastswitch pluging then the pluging will try to open the file:
//     foo/bar/directory_B1/prefix_B_file.ext_B1
//     foo/bar/directory_B1/prefix_B_file.ext_B2
//     foo/bar/directory_B1/prefix_B_file.ext_B1
//     foo/bar/directory_B1/prefix_B_file.ext_B2
//     foo/bar/directory_B1/prefix_B_file.ext_B2
//     foo/bar/directory_C1/file.ext_C1
//     foo/bar/file.ext_C1
//
//
// The first existing file will be openned so the order is important.
//
//
// N.B. The "." will be replaced by the current directory
//      Ex: If you are currently in  c:\foo\src\bar\file.cpp the "include\." correspond to "include\bar"
//      The "@d" means to replace the tag by the corresponding directory in path of the current file.
//      d must be a negative number
//      Ex:
//           If you are currently in c:\foo\bar\src\file.cpp the "@-1" correspond to the directory "bar"
//
// For the C++ syntax, I'm using the following
"C++": [
         [ [".cpp"], ["src", "../src", "../../src/."] ],
         [ ["h", "hpp"], [".", "include", "include/@-1", "../include/@-2/."] ]
       ],
"verbosity": 0

使用上述设置时,如果在C++中,您目前在文件: * …/foo/bar/src/file.cpp 中使用FastSwitch插件,插件将尝试打开文件: * …/foo/bar/src/file.h # 因为存在“。” * …/foo/bar/src/file.hpp # 因为存在“。” * …/foo/bar/include/file.h * …/foo/bar/include/file.hpp

如果您目前正在文件: * …/foo/bar/include/file.hpp 中使用FastSwitch插件,插件将尝试打开文件: * …/foo/bar/src/file.cpp

以下示例使用 FastSwitch 插件的先进设置,以便在目录树之间的关系更复杂的情况下在不同的文件之间进行切换。

对于每个示例,设置都尽可能简约以展示当前功能。所有设置都可以组合使用,以实现强大、快速且灵活的切换。

示例 1:使用以下设置

"C++": [
          [ [".cpp"], ["src"] ],
          [ ["hpp"], ["."] ]
        ]

或者

"C++": [
          [ [".cpp"], ["."] ],
          [ ["hpp"], ["."] ]
        ]

以及包含给定文件的以下目录
ls ./foo/src => test1.cpp, test1.hpp
当在以下文件中时:./foo/src/test1.cpp,你应该能够切换到 ./src/test1.hpp
当在以下文件中时:./foo/src/test1.hpp 应切换到 ./src/test1.cpp

示例 2:使用以下设置

"C++": [
         [ [".cpp"], ["src"] ],
         [ [".h"], ["include"] ]
       ]

以及包含给定文件的以下目录
ls ./foo/src => test2.cpp
ls ./foo/include => test2.h
使用 FastSwitch 插件
当在以下文件中:./foo/src/test2.cpp 时,将切换到 ./include/test2.h
当在以下文件中:./foo/include/test2.hpp 时,将切换到 ./src/test2.cpp

示例 3:使用以下设置

"C++": [
         [ [".cpp"], ["../src"] ],
         [ [".h"], ["include/@-1"] ]
       ]

以及包含给定文件的以下目录
ls ./foo/src => test3.cpp
ls ./foo/include/foo => test3.h
当在以下文件中:./foo/src/test3.cpp 时,将切换到 ./foo/include/foo/test3.hpp
当在以下文件中:./foo/include/foo/test3.hpp 时,将切换到 ./foo/src/test3.cpp

示例 4:使用以下设置

"C++": [
         [ [".cpp"], ["../../src/."] ],
         [ [".h"], ["../include/@-2/."] ]
       ]

以及包含给定文件的以下目录
ls ./foo/src/bar => test4.cpp
ls ./foo/include/foo/bar/ => test4.h
当在以下文件中:./foo/src/bar/test4.cpp 时,将切换到 ./foo/include/foo/bar/test4.hpp
当在以下文件中:./foo/include/foo/bar/test4.hpp 时,将切换到 ./foo/src/bar/test4.cpp

示例 5:使用以下设置

"Javascript": [
                 [[".js"], ["public/js"]],
                 [["Spec.js"], ["../test"]]
               ]

以及包含给定文件的以下目录
ls ./foo/public/js => test5.js
ls ./foo/test => test5Spec.js
当在以下文件 ./foo/public/js/test5.js 中时,将切换到 ./foo/test/test5Spec.js
当在以下文件 ./foo/test/test5Spec.js 中时,将切换到 ./foo/public/js/test5.js

示例 6:使用以下设置

"C++":[
        [[".py"], [".", "..", ""] ],
        [['.py'], [".", "./test", "./tests"], {"prefixes": ["test_", "test"]}]
      ]

以及包含给定文件的以下目录
ls ./Test6 => test6.cpp
ls ./Test6/test => test_test6.cpp
当在以下文件 ./Test6/test6.cpp 中时,将切换到 ./Test6/test/test_test6.cpp
当在以下文件 ./Test6/test/test_test6.cpp 中时,将切换到 ./Test6/test6.cpp

示例 7:使用以下设置

"Javascript": [
                [[".controller.js"], ["."]],
                [[".template.html"], ["."]],
                [[".service.js"], ["."]]
              ],
"HTML": [
          [[".template.html"], ["."]],
          [[".service.js"], ["."]],
          [[".controller.js"], ["."]],
        ]

以及包含给定文件的以下目录
ls ./Test7 => test7_A.controller.js test7_A.service.js test7_A.template.html test7_B.controller.js test7_B.service.js
当在以下文件 ./Test7/test7_A.controller.js 中时,将切换到 ./Test7/test7_A.template.html
当在以下文件 ./Test7/test7_A.template.html 中时,将切换到 ./Test7/test7_A.service.js
当在以下文件 ./Test7/test7_A.service.js 中时,将切换到 ./Test7/test7_A.controller.js
当在以下文件 ./Test7/test7_B.controller.js 中时,将切换到 ./Test7/test7_B.service.js
当在以下文件 ./Test7/test7_B.service.js 中时,将切换到 ./Test7/test7_B.controller.js

示例 8:使用以下设置

"C++": [
         [[".cpp"],       ["../../src/."],       {"prefixes":[""]}],
         [[".h", ".hpp"], ["../include/@-2/@0"], {"prefixes":[""]}]
       ]

以及包含给定文件的以下目录
ls ./Test_8/foo/src/bar => test8_A.cpp test8_B.cpp
ls ./Test_8/foo/include/foo/bar/ => test8_A.h test8_B.hpp
当在以下文件:./Test_8/foo/src/bar/test8_A.cpp 中时,将切换到 ./foo/include/foo/bar/test8_A.h
当在以下文件:./Test_8/foo/include/foo/bar/test8_A.h 中时,将切换到 ./foo/src/bar/test8_A.cpp

示例 9

"C++": [
          [[".cpp"], [".", ""]],
          [[".h"],   ["."]],
          [[".cpp"], ["./unittest"], {"prefixes":["t_"]}]
      ]

以及包含给定文件的以下目录
ls ./Test_9/ => test9_A.cpp test9_A.h test9_B.cpp test9_B.h
ls ./Test_9/unittest/t_test9_A.cpp
当在以下文件:./Test_9/test9_A.cpp 中时,将切换到 ./Test_9/test9_A.h
当在以下文件:./Test_9/test9_A.h 中时,将切换到 ./Test_9/unittest/t_test9.cpp
当在以下文件:./Test_9/unittest/test9_A.cpp 中时,将切换到 ./Test_9/test9_A.cpp
当在以下文件:./Test_9/test9_B.cpp 中时,将切换到 ./foo/src/bar/test9_B.h
当在以下文件:./Test_9/test9_B.h 中时,将切换到 ./foo/src/bar/test9_B.cpp

安装

  1. 安装 FastSwitch 最简单的方式是通过优秀的 Package Control 插件。请参阅 http://wbond.net/sublime_packages/package_control#Installation
    • 安装包控制后,打开命令面板(cmd+shift+P 或 ctrl+shift+P)
    • 输入“安装”,选择“Package Control: 安装包”
    • 从列表中选择FastSwitch。Package Control将会自动为您更新它
  2. 如果您不想使用包控制,您可以手动安装它
    • 前往您的包目录并输入

git clone --recursive https://github.com/papaDoc/FastSwitch FastSwitch * 若要更新,请运行以下命令:git pull && git submodule foreach --recursive git pull origin master * 返回到编辑器,通过按下cmd+shift+P 或 ctrl+shift+P打开命令面板。输入FastSwitch并打开您想要修改的设置文件

使用单元测试验证您的更改

python lib/fastswitch.py