移动到文本文件特定部分的快捷方式
Shortcut to move to a specific part of a text file
我想创建一个键盘快捷键(例如 CTRL+T),它会自动将光标移动到之后的行固定文本的出现,例如 &todo
.
示例:
foo
bar
&todo
fix bug #783
blah
blah2
按 CTRL+T 会自动将光标移动到以 fix ...
.
开头的行
目前我是这样做的:
- CTRL F
- 输入
&todo
、输入
- ESCAPE(关闭
Search
底部面板)
- 首页
- 向下箭头(移动到下一行)
但这需要太多操作。
如何在一个快捷键中做到这一点?
真的更好,我终于用上了。
作为参考,这里是我使用的旧解决方案:首先在 "C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\User\"
中创建一个 gototodo.py
文件,其中包含:
import sublime, sublime_plugin
class GototodoCommand(sublime_plugin.TextCommand):
def run(self, edit):
contents = self.view.substr(sublime.Region(0, self.view.size())) #
a = contents.find('&todo')
cursors = self.view.sel()
cursors.clear()
location = sublime.Region(a, a)
cursors.add(location)
self.view.show_at_center(location)
(row, col) = self.view.rowcol(self.view.sel()[0].begin()) # go to the next line
self.view.run_command("goto_line", {"line": row+2})
然后在"C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\User\Default (Windows).sublime-keymap"
中添加:
{ "keys": ["ctrl+t"], "command": "gototodo" }
完成!
最好的解决方案是使用插件来做到这一点。
下面的插件可以满足您的要求。它将在当前光标位置下方找到下一个 pattern
(即 &todo
标记),将光标移动到它下面的行,并将该位置置于 window 的中心。如果在当前光标位置下方未找到 pattern
,它将从缓冲区顶部再次搜索,提供 环绕 功能。
将以下 Python 代码复制并粘贴到缓冲区中,并将其作为 GoToPattern.py
.
保存在您的 Sublime Text 配置 User
文件夹中
import sublime
import sublime_plugin
class GotoPatternCommand(sublime_plugin.TextCommand):
def run(self, edit, pattern):
sels = self.view.sel()
# Optional flags; see API.
flags = sublime.LITERAL | sublime.IGNORECASE
start_pos = sels[0].end() if len(sels) > 0 else 0
find_pos = self.view.find(pattern, start_pos, flags)
if not find_pos and start_pos > 0:
# Begin search again at the top of the buffer; wrap around
# feature, i.e. do not stop the search at the buffer's end.
find_pos = self.view.find(pattern, 0, flags)
if not find_pos:
sublime.status_message("'{}' not found".format(pattern))
return
sels.clear()
sels.add(find_pos.begin())
self.view.show_at_center(find_pos.begin())
row, col = self.view.rowcol(find_pos.begin())
self.view.run_command("goto_line", {"line": row + 2})
# Uncomment for: cursor to the end of the line.
# self.view.run_command("move_to", {"to": "eol"})
添加键绑定:
// The pattern arg, i.e. "&todo", can be changed to anything you want
// and other key bindings can also be added to use different patterns.
{"keys": ["???"], "command": "goto_pattern", "args": {"pattern": "&todo"}}
如果需要,将命令面板条目添加到 Default.sublime-commands
:
{"caption": "GoToPattern: &todo", "command": "goto_pattern", "args": {"pattern": "&todo"}},
这些链接可能对您有用 ST v. 2 API and ST v. 3 API。
P.S。你知道 Sublime Text 有书签吗? [以防万一你没有。]
我想创建一个键盘快捷键(例如 CTRL+T),它会自动将光标移动到之后的行固定文本的出现,例如 &todo
.
示例:
foo
bar
&todo
fix bug #783
blah
blah2
按 CTRL+T 会自动将光标移动到以 fix ...
.
目前我是这样做的:
- CTRL F
- 输入
&todo
、输入 - ESCAPE(关闭
Search
底部面板) - 首页
- 向下箭头(移动到下一行)
但这需要太多操作。
如何在一个快捷键中做到这一点?
作为参考,这里是我使用的旧解决方案:首先在 "C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\User\"
中创建一个 gototodo.py
文件,其中包含:
import sublime, sublime_plugin
class GototodoCommand(sublime_plugin.TextCommand):
def run(self, edit):
contents = self.view.substr(sublime.Region(0, self.view.size())) #
a = contents.find('&todo')
cursors = self.view.sel()
cursors.clear()
location = sublime.Region(a, a)
cursors.add(location)
self.view.show_at_center(location)
(row, col) = self.view.rowcol(self.view.sel()[0].begin()) # go to the next line
self.view.run_command("goto_line", {"line": row+2})
然后在"C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\User\Default (Windows).sublime-keymap"
中添加:
{ "keys": ["ctrl+t"], "command": "gototodo" }
完成!
最好的解决方案是使用插件来做到这一点。
下面的插件可以满足您的要求。它将在当前光标位置下方找到下一个 pattern
(即 &todo
标记),将光标移动到它下面的行,并将该位置置于 window 的中心。如果在当前光标位置下方未找到 pattern
,它将从缓冲区顶部再次搜索,提供 环绕 功能。
将以下 Python 代码复制并粘贴到缓冲区中,并将其作为 GoToPattern.py
.
User
文件夹中
import sublime
import sublime_plugin
class GotoPatternCommand(sublime_plugin.TextCommand):
def run(self, edit, pattern):
sels = self.view.sel()
# Optional flags; see API.
flags = sublime.LITERAL | sublime.IGNORECASE
start_pos = sels[0].end() if len(sels) > 0 else 0
find_pos = self.view.find(pattern, start_pos, flags)
if not find_pos and start_pos > 0:
# Begin search again at the top of the buffer; wrap around
# feature, i.e. do not stop the search at the buffer's end.
find_pos = self.view.find(pattern, 0, flags)
if not find_pos:
sublime.status_message("'{}' not found".format(pattern))
return
sels.clear()
sels.add(find_pos.begin())
self.view.show_at_center(find_pos.begin())
row, col = self.view.rowcol(find_pos.begin())
self.view.run_command("goto_line", {"line": row + 2})
# Uncomment for: cursor to the end of the line.
# self.view.run_command("move_to", {"to": "eol"})
添加键绑定:
// The pattern arg, i.e. "&todo", can be changed to anything you want
// and other key bindings can also be added to use different patterns.
{"keys": ["???"], "command": "goto_pattern", "args": {"pattern": "&todo"}}
如果需要,将命令面板条目添加到 Default.sublime-commands
:
{"caption": "GoToPattern: &todo", "command": "goto_pattern", "args": {"pattern": "&todo"}},
这些链接可能对您有用 ST v. 2 API and ST v. 3 API。
P.S。你知道 Sublime Text 有书签吗? [以防万一你没有。]