在 Sublime Text 3 中自动 select 粘贴文本
Automatically select pasted text in Sublime Text 3
有没有办法,插件,宏之类的东西让Sublime Text 3自动select刚刚粘贴的文本?
我需要复制和粘贴一些 JSON 数据,但粘贴的文本与周围的文本始终不一致。粘贴和缩进 - 功能对此无法正常工作。
有效的是重新缩进功能,但它需要我 select 一段文本并按下热键。因此,在粘贴之后,我会受益于让刚刚粘贴的文本块自动 selected,这样我就可以按重新缩进热键来正确缩进我粘贴的内容。
另外,如果能把整个过程绑定到一个热键上就更好了,所以:
- Select 文字
- 复制
- 按一些自定义的热键来[=44=]一个宏(?)
- 此宏用于粘贴文本,selects 粘贴文本,运行s 重新缩进热键 (*)
*所以基本上我想做一个键绑定,比如 ctrl+shift+b 来执行以下操作:
- ctrl+v
- 不知何故select 粘贴文本
- ctrl+shift+f
您可以创建一个插件来执行此操作,并使用键绑定执行它:
- 从工具菜单 -> 开发人员 -> 新插件...
- select 全部替换为下面的
import sublime
import sublime_plugin
class PasteAndReindentCommand(sublime_plugin.TextCommand):
def run(self, edit):
before_selections = [sel for sel in self.view.sel()]
self.view.run_command('paste')
after_selections = [sel for sel in self.view.sel()]
new_selections = list()
delta = 0
for before, after in zip(before_selections, after_selections):
new = sublime.Region(before.begin() + delta, after.end())
delta = after.end() - before.end()
new_selections.append(new)
self.view.sel().clear()
self.view.sel().add_all(new_selections)
self.view.run_command('reindent')
- 将其保存在 ST 建议 (
Packages/User/
) 的文件夹中,如 paste_and_reindent.py
- 将以下内容添加到您的用户键绑定中
{ "keys": ["ctrl+shift+b"], "command": "paste_and_reindent" },
请注意,Ctrl+Shift+B 将替换 "Build With" 的默认绑定。
工作原理:
- 按下键绑定时,它会运行在插件中创建的新命令
- 这存储当前文本select离子位置
- 然后执行粘贴操作
- 然后它获得新的文本插入符号位置
- 然后它将旧位置与新位置进行比较,select粘贴的文本
- 然后运行
reindent
命令
你可以让它在之后再次清除 selections(通过将文本插入符重新定位到 selections 的末尾 - 即粘贴后的默认行为)通过进行另一次比较重新压痕前后的 select 个离子。
在 MacOS 上您可以添加:
"find_selected_text": true
到 Sublime Text->首选项->设置(用户设置视图)
有没有办法,插件,宏之类的东西让Sublime Text 3自动select刚刚粘贴的文本?
我需要复制和粘贴一些 JSON 数据,但粘贴的文本与周围的文本始终不一致。粘贴和缩进 - 功能对此无法正常工作。
有效的是重新缩进功能,但它需要我 select 一段文本并按下热键。因此,在粘贴之后,我会受益于让刚刚粘贴的文本块自动 selected,这样我就可以按重新缩进热键来正确缩进我粘贴的内容。
另外,如果能把整个过程绑定到一个热键上就更好了,所以:
- Select 文字
- 复制
- 按一些自定义的热键来[=44=]一个宏(?)
- 此宏用于粘贴文本,selects 粘贴文本,运行s 重新缩进热键 (*)
*所以基本上我想做一个键绑定,比如 ctrl+shift+b 来执行以下操作:
- ctrl+v
- 不知何故select 粘贴文本
- ctrl+shift+f
您可以创建一个插件来执行此操作,并使用键绑定执行它:
- 从工具菜单 -> 开发人员 -> 新插件...
- select 全部替换为下面的
import sublime
import sublime_plugin
class PasteAndReindentCommand(sublime_plugin.TextCommand):
def run(self, edit):
before_selections = [sel for sel in self.view.sel()]
self.view.run_command('paste')
after_selections = [sel for sel in self.view.sel()]
new_selections = list()
delta = 0
for before, after in zip(before_selections, after_selections):
new = sublime.Region(before.begin() + delta, after.end())
delta = after.end() - before.end()
new_selections.append(new)
self.view.sel().clear()
self.view.sel().add_all(new_selections)
self.view.run_command('reindent')
- 将其保存在 ST 建议 (
Packages/User/
) 的文件夹中,如paste_and_reindent.py
- 将以下内容添加到您的用户键绑定中
{ "keys": ["ctrl+shift+b"], "command": "paste_and_reindent" },
请注意,Ctrl+Shift+B 将替换 "Build With" 的默认绑定。
工作原理:
- 按下键绑定时,它会运行在插件中创建的新命令
- 这存储当前文本select离子位置
- 然后执行粘贴操作
- 然后它获得新的文本插入符号位置
- 然后它将旧位置与新位置进行比较,select粘贴的文本
- 然后运行
reindent
命令
你可以让它在之后再次清除 selections(通过将文本插入符重新定位到 selections 的末尾 - 即粘贴后的默认行为)通过进行另一次比较重新压痕前后的 select 个离子。
在 MacOS 上您可以添加:
"find_selected_text": true
到 Sublime Text->首选项->设置(用户设置视图)