У меня следующая проблема: когда я использую 'Cx rt' (string-rectangle), мне предлагается ввести некоторую строку, чтобы заменить выбранный прямоугольник. Скажем, я набираю ";;" (закомментировать прямоугольник). Это работает просто отлично, но в следующий раз, когда я вызываю ту же функцию, и я хочу заменить ее ничем (пустая строка), я не могу этого сделать, потому что есть строка по умолчанию ";;" что я ранее использовал, и если я просто нажму Enter, команда будет использовать это ";;" строка вместо пустой. Как установить пустую строку?
Подобная проблема у меня была с некоторыми функциями поиска / замены. По сути, когда он запоминает последнюю использованную строку и устанавливает ее по умолчанию, как мне вместо этого «ввести» пустую строку?
РЕДАКТИРОВАТЬ :
Kill-rectangle, упомянутый YoungFrog, решает конкретную проблему, но я имел в виду еще одну вещь: в сущности, в любой функции emacs запоминает последнее введенное вами значение и использует его как «значение по умолчанию», когда вы просто нажимаете enter, вы должны возможность очистить это «значение по умолчанию» от того, что было реальным значением по умолчанию перед первым использованием функции. Вот еще один пример:
В режиме Dired, если вы «Mx rgrep», он запрашивает 3 входа:
1) Что искать: все, что вы введете здесь, будет использовано по умолчанию при следующем использовании rgrep. Как кто-то указал, нет смысла искать пустую строку, поэтому очистка этого значения «по умолчанию» действительно никогда не нужна, я думаю.
2) Далее он спросит, в каких файлах искать. По умолчанию это «все» файлы. Если я введу * .txt и осуществлю поиск, в следующий раз, когда я использую rgrep, * .txt будет использоваться как «по умолчанию». Теперь я хочу очистить этот «default» * .txt и вернуться к исходному значению по умолчанию «all», так же, как я хотел очистить «;;» "default" в функции string-rectangle соответствует реальному значению по умолчанию, пустой строке.
Конечно, эту конкретную проблему для всех файлов можно решить, набрав *? Но эта общая проблема остается с другими командами, которые запоминают последнее использованное значение.
3) Затем он запросит базовый каталог, здесь нет проблем.
Итак, как я вижу, всякий раз, когда emacs пытается помочь мне, вспоминая мое последнее использованное значение в какой-то команде (что я нахожу очень полезным в большинстве случаев), должен быть способ очистить это использованное значение, как если бы я никогда не использовал это Команда раньше.
PS Я все еще новичок в emacs, и, возможно, нужная мне функциональность не нужна, так как всегда есть какой-то обходной путь?
delete-rectangle
это вариант.clear rectangle
.comment-dwim
? Ввод пустой строки для поиска также не имеет смысла, но вы можете ввести пустую строку для замены. Мне любопытно увидеть больше примеров, когда пользователю может потребоваться ввод пустой строки.string-rectangle
. Всякий раз, когда пустая строка имеет смысл в качестве возможного ввода, должен быть способ ее ввода, в отличие от принятия значения по умолчанию. Посмотрите внимательно на документ для команды (и на ее исходный код, если вам это удобно), чтобы увидеть, есть ли здесь на самом деле недостаток дизайна. Если вы думаете , есть, то , пожалуйста , сообщите об этом:M-x report-emacs-bug
.2)
вы можете буквально ввестиall
, что немного отличается от*
: оно.*
тоже совпадает .Ответы:
Не используйте
C-x r t
(string-rectangle
), используйтеC-x r k
(kill-rectangle
) вместо этого.источник
C-j
(вместоRET
) может помочь в некоторых случаях, например, ido-mode.В общем случае то, что вы хотите, не может быть достигнуто. Это связано с тем, что несколько утилит и режимов в Emacs хранят свою историю завершения чтения в разных переменных, а не в одном месте. Вы можете вручную установить эти переменные истории
nil
(для вашегоC-x r t
примера(setq string-rectangle-history nil)
), но они не масштабируются. Также нелегко обнаружить имена переменных истории без чтения кода.источник