如何在Sublime Text 3中选择下一个书签

6
有没有办法在SublimeText3中选择当前光标位置与下一个/上一个书签之间的文本?
使用shift键的组合键无效:shift + F2 跳转到上一个书签(即 shift + F2 = “跳到下一个书签”)。在选择“下一个书签”菜单项时按住 shift 键也不起作用。
2个回答

9
为了实现这一点,您可能需要一个插件。我刚刚制作了这个简单的插件,根据前向参数的值,它会选择从当前光标位置到下一个/上一个书签。
这就是插件:
import sublime, sublime_plugin

class SelectToBookmarkCommand(sublime_plugin.TextCommand):
    def run(self, edit, **args):
        """Get initial position"""
        initialPoint = self.view.sel()[0].begin()

        """Clear selected things (if any)"""
        self.view.sel().clear()

        """Move to next bookmark or previous bookmark"""
        forward = args.get('forward','true')
        if forward is True:
            self.view.run_command("next_bookmark")
        else:
            self.view.run_command("prev_bookmark")


        """Get current position (position of the bookmark)"""
        finalPoint = self.view.sel()[0].begin()

        """Clear selected things (if any)"""
        self.view.sel().clear()

        """Region to select"""
        regionToSelect = sublime.Region(initialPoint, finalPoint)

        """Add the region to the selection"""
        self.view.sel().add(regionToSelect)

使用工具 > 新插件,使用提供的插件。将其保存为 SelectToBookmark.py。 最后,像这样将 keyBindings 添加到您的用户文件中:

{
    "keys": ["ctrl+alt+e"],
    "command": "select_to_bookmark",
    "args": {"forward": true}
}

使用另一个keyBinding,将forward参数设置为false,从当前位置选择到上一个书签。
编辑:正如用户@MattDMo所评论的: “确保将.py文件保存在Packages/User中 - 您可以通过选择首选项->浏览包...菜单选项,在您的系统上找到该目录(如果它不会自动出现)”。

1
只是一个提示 - 确保将.py文件保存在Packages/User中 - 您可以通过选择***Preferences -> Browse Packages...***菜单选项在系统上定位目录(如果它没有自动弹出)。 - MattDMo
非常好用!谢谢!在OS-X 10.8.5中,Preferences -> Browse Packages...会打开一个Finder窗口,并选择Packages文件夹。你可以在Finder中使用command-C,然后在Sublime Text的“另存为”对话框中粘贴到packages文件夹(然后选择User将其保存在那里)。我使用了“ctrl+alt+f2”和“ctrl+alt+shift+f2”键绑定,以便与其他书签键绑定类似。 - drevicko
我很高兴它运作正常。谢谢@MattDMo,我已经更新了回答并添加了那个信息。 - sergioFC
如果这个脚本也支持SublimeBookmark包,那就太好了。 - Jon

3
类似于@sergioFC的回答。此版本用于SublimeBookmark包。
import sublime, sublime_plugin

class SelectToBookmarkCommand(sublime_plugin.TextCommand):
    def run(self, edit, **args):
        """Get initial position"""
        initialPoint = self.view.sel()[0].begin()

        """Clear selected things (if any)"""
        self.view.sel().clear()

        """Move to next bookmark or previous bookmark"""
        forward = args.get('forward','true')
        if forward is True:
            self.view.window().run_command("sublime_bookmark",{ "type" : "goto_previous" })
        else:
            self.view.window().run_command("sublime_bookmark",{ "type" : "goto_next" })


        """Get current position (position of the bookmark)"""
        finalPoint = self.view.sel()[0].begin()

        """Clear selected things (if any)"""
        self.view.sel().clear()

        """Region to select"""
        regionToSelect = sublime.Region(initialPoint, finalPoint)

        """Add the region to the selection"""
        self.view.sel().add(regionToSelect)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接