2014-09-13 5 views
5

Я огромный пользователь emacs, и я абсолютно люблю тот факт, что вы можете делать ВСЕ без использования мыши. Я считаю, что эта функция делает emacs действительно эффективным.возвышенный текст несколько ярлыков курсора

Я также большой поклонник Sublime Text на Linux. Мне нравится функция множественного курсора, которую вы включаете с помощью Ctrl+left_mouse_clik. Я также обнаружил, что вы можете щелкнуть Shift+alt+arrow_up_or_down, которые создают новый курсор в строке выше или ниже. Поэтому мне было интересно, есть ли способ в возвышенном тексте создать несколько курсоров, где бы вы ни захотели, без использования мыши.

ответ

5

Одним из возможных решений является использование закладок (если вы еще этого не сделали). Я не знаю привязки ключей Linux от верхней части головы, но вы можете добавлять закладки, а затем выбирать все. Чтобы просмотреть привязки для вашей платформы, перейдите к Goto -> Bookmarks, они должны быть перечислены командой. Вы также можете посмотреть файл привязки ключей по умолчанию.

Второе решение - использовать плагин. Я написал следующее некоторое время назад. Не могу сказать, насколько хорошо он работает, как я не помню. Быстрый тест с ним заставляет меня думать, что все работает нормально.

import sublime 
import sublime_plugin 


class MultiCursorCommand(sublime_plugin.TextCommand): 
    def run(self, edit, action="add"): 
     self.key = "multi_cursor" 
     cursors = self.view.sel() 
     saved_cursors = self.view.get_regions(self.key) 
     if action == "add": 
      self.view.add_regions(self.key, list(cursors) + saved_cursors, "keyword", "", sublime.DRAW_EMPTY) 
     elif action == "show": 
      cursors.add_all(saved_cursors) 
      self.view.add_regions(self.key, []) 
     elif action == "show_begin": 
      saved_cursors += list(cursors) 
      cursors.clear() 
      cursors.add_all([c.begin() for c in saved_cursors]) 
      self.view.add_regions(self.key, []) 
     elif action == "show_end": 
      saved_cursors += list(cursors) 
      cursors.clear() 
      cursors.add_all([c.end() for c in saved_cursors]) 
      self.view.add_regions(self.key, []) 
     elif action == "show_visible": 
      pass 
     elif action == "clear": 
      self.view.add_regions(self.key, []) 
     elif action == "remove": 
      for cursor in cursors: 
       if cursor in saved_cursors: 
        saved_cursors.remove(cursor) 
      self.view.add_regions(self.key, saved_cursors, "keyword", "", sublime.DRAW_EMPTY) 


class RemoveCursorCommand(sublime_plugin.TextCommand): 
    def is_enabled(self): 
     return len(self.view.sel()) > 1 

    def run(self, edit, forward=True): 
     self.view.sel().subtract(self.view.sel()[0 if forward else -1]) 

Привязки клавиш будет выглядеть как

{ "keys": ["alt+a"], "command": "multi_cursor", "args": {"action": "add"} }, 
{ "keys": ["alt+s"], "command": "multi_cursor", "args": {"action": "show"} } 

Есть, вероятно, плагины, которые написали люди, которые находятся на контроле пакетов, которые делают то же самое, я просто не знают о них.

Смежные вопросы