2013-03-12 2 views
0

Исходя из фона обработки текстов, поведение, которое я привык видеть для delete word, заключается в следующем: удалите все слово плюс все пробелы после слова. Я предполагаю, что плагин delete_word.py (в пределах /Packages/Default) сохраняет пробелы для тех, у кого есть фон программирования.ST2 и Emacs: Удалить целые/целые слова + пробелы вправо

Чтобы приблизиться к поведению, которое я привык видеть, необходимо поместить курсор в конец предыдущего слова, чтобы удалить следующее слово (так что только одно пробелы остается между обоими словами, когда это делается).

Есть ли еще одна комбинация клавиш, уже встроенная в Sublime, которая будет выполнять поведение, к которому я наиболее привык?

+0

что такое 'delete_word.py'? – MattDMo

+0

'delete_word.py' - это плагин сценария python, который находится в папке'/Packages/Default'. Он связан с раскладкой OSX/Mac '' ctrl + backspace "или' 'ctrl + delete" ', в зависимости от того, хочет ли пользователь удалять вперед или назад. Я отредактирую вопрос, чтобы добавить плагин word. – lawlist

+0

Используя редакторы кода, а не текстовые процессоры, я нахожу довольно раздражающим, что текстовые процессоры удаляют больше, чем просто слово ctrl + backspace, даже если это дополнительный период или апостроф. Я понятия не имею, почему это раздражает, но это просто так. – Darkwater

ответ

2

Решение # 1 - Sublime Text 2:

По какой-то причине, super+d ака ⌘+d ака find_under_expand сделать не работы с макросами. find_under_expand не является плагином. Итак, вот пример выбора-все-слово плагин, который делает работу с макросами:

import sublime, sublime_plugin 

class Expand(sublime_plugin.TextCommand): 
    def run(self, edit): 
     regions = [] 
     for s in self.view.sel(): 
      word = self.view.word(sublime.Region(s.begin(), s.end())) 
      if word.end() == s.end(): 
      # to deal with an end of line issue 
       word = self.view.word(sublime.Region(s.end(), s.end() + 1)) 
      regions.append(word) 
     for r in regions: 
      self.view.sel().add(r) 

Далее, установите плагин Shrink-пробельные написанный dacap:

https://github.com/dacap/sublime-shrink-whitespaces.

Затем создайте этот макрос. Сокращение пробелов два (2) раза имеет дело с ситуациями, когда есть вкладки или вкладки + пробелы.

[ 
{ 
     "args": null, 
     "command": "expand" 
}, 
{ 
     "args": null, 
     "command": "right_delete" 
}, 
{ 
     "args": null, 
     "command": "shrink_whitespaces" 
}, 
{ 
     "args": null, 
     "command": "shrink_whitespaces" 
}, 
{ 
     "args": 
     { 
      "characters": " " 
     }, 
     "command": "insert" 
} 
] 

Решение # 2 - Sublime Text 2:

Установка: https://github.com/bits/ExpandSelectionToWhitespace-SublimeText

Создать макрос и связать его с вашей любимой комбинации клавиш:

[ 
    { 
     "args": null, 
     "command": "expand_selection_to_whitespace" 
    }, 
    { 
     "args": 
     { 
      "by": "wordends", 
      "extend": true, 
      "forward": true 
     }, 
     "command": "move" 
    }, 
    { 
     "args": 
     { 
      "by": "words", 
      "extend": true, 
      "forward": false 
     }, 
     "command": "move" 
    }, 
    { 
     "args": null, 
     "command": "left_delete" 
    } 
] 

Решение №1 - Emacs - определить две функции и создать макрос:

(fset 'lawlist-kill-word [?\C-= kp-delete ?\C-+]) 

(global-set-key (kbd "C-=") 'lawlist-mark-word) 

(global-set-key (kbd "C-+") 'delete-horizontal-space-forward) 

(defun lawlist-mark-word() 
    "Mark the entire symbol around or in front of point." 
    (interactive) 
    (let ((symbol-regexp "\\s_\\|\\sw")) 
    (when (or (looking-at symbol-regexp) 
       (looking-back symbol-regexp)) 
     (skip-syntax-forward "_w") 
     (set-mark (point)) 
     (while (looking-back symbol-regexp) 
     (backward-char))))) 

(defun delete-horizontal-space-forward() ; adapted from `delete-horizontal-space' 
     "*Delete all spaces and tabs after point." 
     (interactive "*") 
     (delete-region (point) (progn (skip-chars-forward " \t") (point)))) 
Смежные вопросы