Eclipse HotKey:如何在标签之间切换?

Ska*_*kay 661 eclipse tabs hotkeys

如何在Eclipse中打开的窗口之间切换?有Ctrl+ F6,但是它问我想要哪一个,但是我希望在浏览器或操作系统(Cmd/ Win+ Tab)窗口中切换它而不从列表中选择文件.如何在Eclipse中轻松完成这项工作?

我试图为事件分配热键:

  • 向前
  • 前进的历史
  • 下一页

但它不按我想要的方式工作.

Von*_*onC 884

  • CTRL+ E(对于编辑列表)
  • CTRL+ F6(用于通过列表切换到下一个编辑器)
    您可以为"下一个编辑器"键指定另一个快捷方式.

是两个官方的快捷方式,但它们都涉及显示的列表.

CTRL+ Page Up/ CTRL+ Page Down可以循环浏览编辑器而不显示列表.

最后一组快捷方式的有趣之处在于:
它们未在要定义的Eclipse Keys快捷方式中列出.
它们可以从多页面编辑器继承,使它们成为特定操作系统的快捷方式.


关于Mac OS(OSX)的快捷方式,Matt Ball在2011年9月抱怨无法重新映射CTRL+ Page Up/ CTRL+ Page Down:

它让我疯狂,因为我无法在OS X(- Left- Right)中的所有其他选项卡式程序中翻阅打开的选项卡.

好吧,在2012年3月,亚瑟回答说:

,我刚刚下载了最新版本的Eclipse(3.7+).我已经能够在编辑器中将"上一个/下一个选项卡"绑定到(- Left- Right),我很确定以前我做不到.
所以我猜他们听到了你的声音.
它的工作方式与您预期的一样,制表符从左到右,反之亦然,不是基于历史记录,也不是像这样的废话.

Matt Ball证实:

哇,选择"编辑Java源"实际上工作了!
现在,不幸的是,这意味着如果我导航到非Java文件(JSP,XML,JS等),我就是SOL.
解决这个问题的方法是为这一对"复制命令",然后选择我想要的所有"时间".
到目前为止,它至少可以很好地用于Java和JSP文件.
这是一个主要的PITA设置,但它只是一次性的事情.

出口的偏好可供您试用.
导入后,您应该看到所有相关类型的文档:

Mac Os键绑定

  • 在非扩展OSX键盘上:默认情况下为fn + ctrl + up_arrow/down_arrow. (23认同)
  • 在OSX上,将CTRL替换为CMD,用于前两个键盘操作.但是你仍然需要使用CTRL和PgUp或PgDown来循环编辑.我在尝试下面的一些建议时发现了另一组有用的KB快捷方式:您可以使用ALT + Up或ALT + Down来移动整行代码. (7认同)
  • 现在没有机会在Indigo中重新映射`CTRL + Page Up` /`CTRL + Page Down`,有吗?它让我疯狂,因为我无法在OS X中的所有其他选项卡式程序("⌘-Left"和"⌘-Right")中翻阅打开的选项卡. (5认同)

vic*_*tor 190

如果您转到首选项(例如窗口→首选项)并查看常规→键

然后搜索"下一个标签"和"上一个标签",您可以重新映射它们.

重新绑定之前,Eclipse Preferences中的Next Tab命令

  • @Hafthor:我习惯于Notepad ++,所以我想让Ctrl + Tab在*last active*tabs/editors之间切换.要执行此操作,请从"下一个编辑器"中删除默认的Ctrl + F6,并从"上一页编辑器"命令中按Ctrl + Shift + F6,然后为这些命令插入Ctrl + Tab和Ctrl + Shift + Tab.请注意,由于某些原因我不得不*删除*旧命令(在我更改密钥的其他情况下我不需要这样做),但很高兴现在可以正常工作!此外,在玩游戏时,Eclipse(Juno)表现得很奇怪,我无法使用任何常用或更改的键组合切换标签,但重新启动修复了这一点. (24认同)
  • 这不是正确的事情.这只是按标签栏上显示的顺序循环显示选项卡,而最近切换到订单. (19认同)
  • 我添加了"下一个标签" - >"Ctrl + Tab""上一个标签" - >"Ctrl + Shift + Tab"就像在Firefox中一样 (15认同)

Rob*_*ino 101

在操作系统中像Windows一样切换(转到最后有焦点的窗口)

CTRL-F6在Eclipse中,比如ALT-TAB(在Windows上),会显示一个可用的选项卡/窗口列表(如果你按下CTRL/ ALT键),并突出显示当你放开这个键时你会跳到的那个.您不必选择窗口.如果要一次遍历多个选项卡,请按住CTRL按钮并点击TAB按钮.这是相同的行为ALT-TAB在Windows上.

在这个意义上,CTRL- SHIFT-F6在Eclipse是ALT- SHIFT-TAB模拟.就个人而言,我在Eclipse中更改这些绑定就像Visual Studio一样.即CTRL-TABCTRL- SHIFT-TAB我这样做:

窗口>首选项>常规>键

然后设置"Next Editor"= Ctrl+Tab和"Previous Editor"= Ctrl+ Shift+Tab.在设置新绑定之前,不要忘记单击"解除绑​​定命令".

像浏览器一样切换(转到当前选项卡右侧的选项卡)

这是CTRL-PageDown向右走,CTRL-PageUp向左走.令人沮丧的是,当你到达选项卡列表的末尾(比如右边的选项卡),然后再次尝试再往前走Eclipse就像大多数浏览器一样,不会循环到第一个选项卡(最左边).

  • 这是这个帖子中评价最低的答案.特别是因为Juno更改哪些选项卡显示为纯列表而不是最近使用的编辑器. (12认同)

pei*_*rix 55

您可以使用ALT+ Left转到上一个标签,或者ALT+ Right转到前转.这种方法使用像历史一样的制表符切换,因此它将转到您打开的上一个选项卡,如果您已经"退回"一次或多次,则转发.我知道,有点奇怪,但它确实有效.您可以通过单击每个选项卡一次"重置"历史记录.

  • 在历史记录中记录操作时无用,例如在同一个类中进行方法定义. (5认同)
  • 我实际上喜欢它转向行为的行为,例如转到方法定义,这是一种在浏览大量文件时来回转换的有用方法. (2认同)

Jub*_*tel 15

  • Right侧移:Ctrl+page Down
  • Left侧移:CTRL+page Up

额外

  • 获取打开的标签列表:Ctrl+F6

Eclipse其他的Short Cuts


fas*_*ava 13

CTRL+ F6很好用.如果要切换到下一个/上一个选项卡,则需要执行CTRL+ Page Down/ CTRL+ Page Up.

  • 是的,我经常使用这个.但是,当编辑器提出多个视图时(例如,当您处理`XML`或`properties`文件时),它会在不同的视图之间切换,并且您无法再在标签之间切换:( (2认同)

asg*_*sgs 10

默认值为Ctrl+ F6.您可以转到" 窗口"首选项来更改它.我通常将其更改为Ctrl+ Tab,与我们在浏览器中切换选项卡和其他内容时使用的相同.


Sun*_*arg 8

返回上一个选项卡的快捷键

Alt+LeftArrow返回。


Che*_*gat 6

自定义KeyBinding序列示例:使用Eclipse RCP CTRL + TAB 在可访问模块或编辑器正向之间切换.

您按CTRL + TAB 第二次打开另一个编辑器并使用RCP Eclipse关闭以前的编辑器.

package rcp_demo.Toolbar;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
import rcp_demo.Editor.EmployeeEditor;
import rcp_demo.Editor.EmployeeEditorInput;
import rcp_demo.Editor.ProductEditor;
import rcp_demo.Editor.ProductEditorInput;
import rcp_demo.Editor.UserEditor;
import rcp_demo.Editor.UserEditorInput;

public class Forward_Editor extends AbstractHandler{

    static String Editor_name;  //  Active Editor name store in Temporary 
    static int cnt;             //  close editor count this variable
    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

        IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
        IWorkbenchPage page = window.getActivePage();

        UserEditorInput std_input = new UserEditorInput();
        EmployeeEditorInput emp_input=new EmployeeEditorInput();
        ProductEditorInput product_input=new ProductEditorInput();

        IEditorReference[] editors = page.getEditorReferences();

        //Blank Editor Window to execute..
        if(editors.length==0)
        {
            //First time close editor can open Student_Editor
            if(cnt==1 && Editor_name.equals("Student_Editor"))
            {
                try {
                    page.openEditor(emp_input, EmployeeEditor.Id);
                    cnt=1;
                    Editor_name=page.getActiveEditor().getTitle();
                    System.out.println("EMP>>Len:: "+editors.length+"..EDi::"+Editor_name);
                } catch (PartInitException e) {
                    e.printStackTrace();
                }       
            }
            //First time close editor can open Employee_Editor
            else if(cnt==1 && Editor_name.equals("Employee_Editor"))
            {
                try {
                    page.openEditor(product_input,ProductEditor.ID);
                    cnt=1;
                    Editor_name=page.getActiveEditor().getTitle();
                    System.out.println("PRO>>Len:: "+editors.length+"..EDi::"+Editor_name); 
                } catch (PartInitException e) {e.printStackTrace();
                }
            }
            //First time close editor can open Product_Editor
            else if(cnt==1 && Editor_name.equals("Product_Editor"))
            {
                try {
                    page.openEditor(std_input, UserEditor.ID);
                    System.out.println("student Editor open");
                    cnt=1;
                    Editor_name=page.getActiveEditor().getTitle();
                    System.out.println("Close::"+Editor_name);
                } catch (PartInitException e) {
                    e.printStackTrace();
                }
            }
            //First Time call // empty editors 
            else{
                try {
                    page.openEditor(std_input, UserEditor.ID);
                    System.out.println("student Editor open");
                    Editor_name=page.getActiveEditor().getTitle();
                } catch (PartInitException e) {
                    e.printStackTrace();
                }
            }
        }//End if condition

        //AvtiveEditor(Student_Editor) close to open Employee Editor
        else if(page.getActiveEditor().getTitle().equals("Student_Editor"))
        {
            try {
                //page.closeAllEditors(true);
                page.closeEditor(page.getActiveEditor(), true);
                page.openEditor(emp_input, EmployeeEditor.Id);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("EMP>>Len:: "+editors.length+"..EDi::"+Editor_name);
            } catch (PartInitException e) {
                e.printStackTrace();
            }
        }
        //AvtiveEditor(Employee_Editor) close to open Product Editor
        else if(page.getActiveEditor().getTitle().equals("Employee_Editor"))
        {
            try {
                page.closeAllEditors(true);
                page.openEditor(product_input,ProductEditor.ID);

                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("PRO>>Len:: "+editors.length+"..EDi::"+Editor_name);

            } catch (PartInitException e) {
                e.printStackTrace();
            }
        }
        //AvtiveEditor(Product_Editor) close to open Student Editor
        else if(page.getActiveEditor().getTitle().equals("Product_Editor"))
        {
            try {
                page.closeAllEditors(true);
                page.openEditor(std_input, UserEditor.ID);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("stud>>Len:: "+editors.length+"..EDi::"+Editor_name);
            } catch (PartInitException e) {
                e.printStackTrace();
            }
        }
        //by default open Student Editor
        else 
        {
            try {
                page.closeAllEditors(true);
                page.openEditor(std_input, UserEditor.ID);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("stud_else>>Len:: "+editors.length+"..EDi::"+Editor_name);
            } catch (PartInitException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}

>Custom KeyBinding sequence example : <kbd> SHIFT + TAB </kbd> to switch between visilble Modules or Editors **Backword** direction using Eclipse RCP.


package rcp_demo.Toolbar;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
import rcp_demo.Editor.EmployeeEditor;
import rcp_demo.Editor.EmployeeEditorInput;
import rcp_demo.Editor.ProductEditor;
import rcp_demo.Editor.ProductEditorInput;
import rcp_demo.Editor.UserEditor;
import rcp_demo.Editor.UserEditorInput;

public class Backword_Editor extends AbstractHandler{

    static String Editor_name;   // Active Editor name store in Temporary 
    static int cnt;

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

        IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
        IWorkbenchPage page = window.getActivePage();
        //Three object create in EditorInput 
        UserEditorInput std_input = new UserEditorInput();
        EmployeeEditorInput emp_input=new EmployeeEditorInput();
        ProductEditorInput product_input=new ProductEditorInput();

        IEditorReference[] editors = page.getEditorReferences();
        System.out.println("Length : "+editors.length);

        if(editors.length==0)
        {
            //First time close editor can open Student_Editor
            if(cnt==1 && Editor_name.equals("Product_Editor"))
            {
                try {
                    page.openEditor(emp_input, EmployeeEditor.Id);
                    cnt=1;
                    Editor_name=page.getActiveEditor().getTitle();
                    System.out.println("EMP>>Len:: "+editors.length+"..EDi::"+Editor_name);
                } catch (PartInitException e) {
                    e.printStackTrace();
                }               
            }
            //First time close editor can open Employee_Editor
            else if(cnt==1 && Editor_name.equals("Employee_Editor"))
            {
                try {
                    page.openEditor(std_input, UserEditor.ID);
                    cnt=1;
                    Editor_name=page.getActiveEditor().getTitle();
                    System.out.println("Student>>Len:: "+editors.length+"..student::"+Editor_name);

                } catch (PartInitException e) {
                    e.printStackTrace();
                }
            }
            //First time close editor can open Product_Editor
            else if(cnt==1 && Editor_name.equals("Student_Editor"))
            {
                        try {
                            page.openEditor(product_input,ProductEditor.ID);
                            cnt=1;
                            Editor_name=page.getActiveEditor().getTitle();
                            System.out.println("PRO>>Len:: "+editors.length+"..EDi::"+Editor_name);

                        } catch (PartInitException e) {
                            e.printStackTrace();
                        }
            } 
            //First Time or empty editors to check this condition
            else{
                try {
                    page.openEditor(product_input,ProductEditor.ID);
                    System.out.println("product Editor open");
                } catch (PartInitException e) {
                    e.printStackTrace();
                }
            }
        }
        //AvtiveEditor(Product_Editor) close to open Employee Editor
        else if(page.getActiveEditor().getTitle().equals("Product_Editor"))
        {
            System.out.println("Product:: "+page.getActiveEditor().getTitle());
            try {
                page.closeAllEditors(true);
                page.openEditor(emp_input, EmployeeEditor.Id);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("Employee Editor open");
            } catch (PartInitException e) {
                e.printStackTrace();
            }
        }
        //AvtiveEditor(Employee_Editor) close to open Student Editor
        else if(page.getActiveEditor().getTitle().equals("Employee_Editor"))
        {
            System.out.println("Emp:: "+page.getActiveEditor().getTitle());
            try {
                page.closeAllEditors(true);
                page.openEditor(std_input, UserEditor.ID);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("student Editor open");
            } catch (PartInitException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //AvtiveEditor(Student_Editor) close to open Product Editor
        else if(page.getActiveEditor().getTitle().equals("Student_Editor"))
        {
            System.out.println("Product:: "+page.getActiveEditor().getTitle());
            try {
                page.closeAllEditors(true);
                page.openEditor(product_input,ProductEditor.ID);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("product Editor open");
            } catch (PartInitException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //by default open Student Editor
        else 
        {
            try {
                page.closeAllEditors(true);
                page.openEditor(product_input,ProductEditor.ID);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("product Editor open");
            } catch (PartInitException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

自定义KeyBinding序列示例:使用Eclipse RCP SHIFT + TAB 在可视模块或编辑器后退方向之间切换.

package rcp_demo.Toolbar;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
import rcp_demo.Editor.EmployeeEditor;
import rcp_demo.Editor.EmployeeEditorInput;
import rcp_demo.Editor.ProductEditor;
import rcp_demo.Editor.ProductEditorInput;
import rcp_demo.Editor.UserEditor;
import rcp_demo.Editor.UserEditorInput;

public class Backword_Editor extends AbstractHandler{

    static String Editor_name;   // Active Editor name store in Temporary 
    static int cnt;

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

        IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
        IWorkbenchPage page = window.getActivePage();
        //Three object create in EditorInput 
        UserEditorInput std_input = new UserEditorInput();
        EmployeeEditorInput emp_input=new EmployeeEditorInput();
        ProductEditorInput product_input=new ProductEditorInput();

        IEditorReference[] editors = page.getEditorReferences();
        System.out.println("Length : "+editors.length);

        if(editors.length==0)
        {
            //First time close editor can open Student_Editor
            if(cnt==1 && Editor_name.equals("Product_Editor"))
            {
                try {
                    page.openEditor(emp_input, EmployeeEditor.Id);
                    cnt=1;
                    Editor_name=page.getActiveEditor().getTitle();
                    System.out.println("EMP>>Len:: "+editors.length+"..EDi::"+Editor_name);
                } catch (PartInitException e) {
                    e.printStackTrace();
                }               
            }
            //First time close editor can open Employee_Editor
            else if(cnt==1 && Editor_name.equals("Employee_Editor"))
            {
                try {
                    page.openEditor(std_input, UserEditor.ID);
                    cnt=1;
                    Editor_name=page.getActiveEditor().getTitle();
                    System.out.println("Student>>Len:: "+editors.length+"..student::"+Editor_name);

                } catch (PartInitException e) {
                    e.printStackTrace();
                }
            }
            //First time close editor can open Product_Editor
            else if(cnt==1 && Editor_name.equals("Student_Editor"))
            {
                        try {
                            page.openEditor(product_input,ProductEditor.ID);
                            cnt=1;
                            Editor_name=page.getActiveEditor().getTitle();
                            System.out.println("PRO>>Len:: "+editors.length+"..EDi::"+Editor_name);

                        } catch (PartInitException e) {
                            e.printStackTrace();
                        }
            } 
            //First Time or empty editors to check this condition
            else{
                try {
                    page.openEditor(product_input,ProductEditor.ID);
                    System.out.println("product Editor open");
                } catch (PartInitException e) {
                    e.printStackTrace();
                }
            }
        }
        //AvtiveEditor(Product_Editor) close to open Employee Editor
        else if(page.getActiveEditor().getTitle().equals("Product_Editor"))
        {
            System.out.println("Product:: "+page.getActiveEditor().getTitle());
            try {
                page.closeAllEditors(true);
                page.openEditor(emp_input, EmployeeEditor.Id);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("Employee Editor open");
            } catch (PartInitException e) {
                e.printStackTrace();
            }
        }
        //AvtiveEditor(Employee_Editor) close to open Student Editor
        else if(page.getActiveEditor().getTitle().equals("Employee_Editor"))
        {
            System.out.println("Emp:: "+page.getActiveEditor().getTitle());
            try {
                page.closeAllEditors(true);
                page.openEditor(std_input, UserEditor.ID);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("student Editor open");
            } catch (PartInitException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //AvtiveEditor(Student_Editor) close to open Product Editor
        else if(page.getActiveEditor().getTitle().equals("Student_Editor"))
        {
            System.out.println("Product:: "+page.getActiveEditor().getTitle());
            try {
                page.closeAllEditors(true);
                page.openEditor(product_input,ProductEditor.ID);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("product Editor open");
            } catch (PartInitException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //by default open Student Editor
        else 
        {
            try {
                page.closeAllEditors(true);
                page.openEditor(product_input,ProductEditor.ID);
                cnt=1;
                Editor_name=page.getActiveEditor().getTitle();
                System.out.println("product Editor open");
            } catch (PartInitException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

密钥序列

M1意味着 CTRL

M2意味着 SHIFT

plugin.xml中


<extension point="org.eclipse.ui.commands">
        <command
                defaultHandler="rcp_demo.Toolbar.Forward_Editor"
                id="RCP_Demo.Toolbar.Forward_editor_open_cmd"
                name="Forward_Editor">
        </command>
        <command
                defaultHandler="rcp_demo.Toolbar.Backword_Editor"
                id="RCP_Demo.Toolbar.backwards_editor_open_cmd"
                name="Backword_Editor">
        </command>
    </extension>
<extension point="org.eclipse.ui.bindings">
        <key
                commandId="RCP_Demo.Toolbar.Forward_editor_open_cmd"
                schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
                sequence="M1+TAB">
        </key>  
        <key
                commandId="RCP_Demo.Toolbar.backwards_editor_open_cmd"
                schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
                sequence="M2+TAB">
        </key>              
</extension>
Run Code Online (Sandbox Code Playgroud)


Zoo*_*ook 5

3行AutoHotKey脚本(在Windows上,无论如何):

#IfWinActive ahk_class SWT_Window0
^+Tab::^PgUp
^Tab::^PgDn
Run Code Online (Sandbox Code Playgroud)

把它放在你的启动文件夹中(保存为*.ahk,必须安装AutoHotKey),Eclipse标签现在可以像Chrome或Firefox一样工作.