来自文字处理背景,我已经习惯看到delete word
以下行为:删除整个单词以及单词后的所有空格。我假设插件delete_word.py
(在 内/Packages/Default
)为具有编程背景的人保留空白。
为了近似我习惯看到的行为,有必要将光标放在前一个单词的末尾,删除下一个单词(这样完成后两个单词之间只剩下一个空格)。
Sublime 是否已经内置了另一个键盘快捷键来完成我最习惯的行为?
来自文字处理背景,我已经习惯看到delete word
以下行为:删除整个单词以及单词后的所有空格。我假设插件delete_word.py
(在 内/Packages/Default
)为具有编程背景的人保留空白。
为了近似我习惯看到的行为,有必要将光标放在前一个单词的末尾,删除下一个单词(这样完成后两个单词之间只剩下一个空格)。
Sublime 是否已经内置了另一个键盘快捷键来完成我最习惯的行为?
解决方案#1——崇高文本2:
无论出于何种原因,super+d
aka ⌘+d
akafind_under_expand
不适用于宏。 似乎不是插件。因此,这是一个适用于宏的示例 select-entire-word 插件: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-Whitespaces 插件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——崇高文本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))))