2017-05-31 52 views
1

是否有任何方法,插件,宏或其他東西使Sublime Text 3自動選擇剛剛粘貼的文本?在Sublime Text中自動選擇粘貼的文本3

我需要複製和粘貼一些JSON數據,但粘貼的文本不符合周圍的文本。粘貼和縮進功能無法正常工作。

什麼工作是重新發布的功能,但它需要我選擇一個文本塊並按熱鍵。所以粘貼後我會自動選擇剛粘貼的文本塊,所以我只需按下重新設置的熱鍵以正確縮進我粘貼的內容即可。

此外,它甚至會更好,如果我可以在整個過程中綁定到一個熱鍵,這樣:

  • 選擇文本
  • 複製
  • 按一些自定義的熱鍵運行宏(? )
  • 這個宏的粘貼文本,選擇粘貼文本等基本上我會運行重新縮進的熱鍵(*)

*喜歡做一個按鍵綁定,比如,CTRL + SHIFT + B來做到以下幾點:

  • CTRL + V
  • 不知怎的,選擇粘貼的文本
  • Ctrl + Shift + F

回答

2

你可以創建一個插件來做到這一點,並用按鍵綁定執行:

  • 從工具菜單 - >開發 - >新建插件...
  • 選擇所有,並具有以下
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 wi將替換「Build With」的默認綁定。

它是如何工作的:

  • 當按下鍵綁定,它運行在插件
  • 這個存儲當前的文本選擇位置
  • 然後創建新的命令,它執行粘貼操作
  • 然後它獲得新的文字插入位置
  • 然後它將舊位置與新位置進行比較,並選擇被粘貼的文本
  • 然後運行reindent命令

你能得到它清除選擇再次之後(通過重新定位文本插入記號,以將選擇結束 - 即粘貼後的默認行爲)做的另一個比較重新註冊前後的選擇。

+0

工程就像一個魅力,並只花了一分鐘做你所建議的,謝謝! – Piwwoli

相關問題