Когда вы выбираете несколько слов в Sublime (удерживая нажатой клавишу Ctrl) и вставляете их в одно место, по умолчанию каждое слово отделяется от следующего символом \n. Я хотел бы изменить это на запятую и, при желании, поставить кавычки вокруг каждого слова. Мне интересно, есть ли простой способ сделать это. Любая помощь приветствуется.
Sublime Text 3: как выделить несколько слов и вставить их в одну строку, разделенную запятыми?
Ответы (1)
Вот что я бы сделал с некоторыми встроенными ярлыками:
- каким-то образом выберите строки, которые вы только что вставили (например, expand_selection_to_paragraph, который можно сопоставить)
- ctrl+shift+l, чтобы сделать их мультикурсорными
- ctrl+j для соединения строк
- переместите курсор в конец каждого выделения, двигаясь вправо, вставьте запятую, которая будет стоять между каждым выделением.
Если вы хотите написать плагин, чтобы упростить его (и настроить в соответствии с вашими потребностями). Вот очень грубый, который я использую, чтобы сделать выбор в объект списка Python. Не стесняйтесь изменять и сопоставлять ключ.
import sublime, sublime_plugin
class PythonListifyCommand(sublime_plugin.TextCommand):
"""Change a selected text into a Python list structure.
Basically this is done by replacing space, comma, tab with comma.
Then Python list brackets are attached to both start and end to make
a Python list.
If ther are multiple selections, then multiple lists will be created.
If any selection is of zero length, then that particular line will
be listified. There will always be a comma at the end of each line,
this is to make sure multiple line list can connect up. Python does
not mind extra comma at the end of a list inside bracket.
"""
def listify(self,line):
import re
no_leading = re.sub('^[ ,\t]+','',line)
no_leading = re.sub('\n[ ,\t]+','\n',no_leading)
in_line = re.sub('[ ,\t]+',',',no_leading)
end_line_comma = re.sub('\n',',\n',in_line)
return end_line_comma
def run(self, edit):
sel = self.view.sel()
view = self.view
for s in sel:
if s.a == s.b:
r = view.line(s)
else:
r = s
rep = '[' + self.listify(view.substr(r)) + ']'
if rep[-1] is ']' and rep[-2] is '\n':
rep = rep[:-2] + ']\n'
view.replace(edit, r, rep)
person
Angus Yeh
schedule
28.05.2014
Ctrl+h
и выполнить поиск REGEX для\n
и заменить на","
в своем выборе. Вам просто нужно добавить"
в начале и в конце строки. - person Jongosi   schedule 27.05.2014