2012-06-15 3 views
4

Предположим, что мы имеем следующий текст:лучше искать в Emacs с расширить регион

(print "thIis-is-a-text") 

и курсор находится в слове «это», которое между символом «ч» и «я».

В Emacs, если я типа Cs Cw, текст для поиска является 'есть',

снова Cw является 'этого есть',

снова Cw это «является -Есть-а»,

снова Cw это 'является-это-текст',

снова C-ш является 'является-это-текст "...

и есть плагин Emacs expand region:" Расширить область увеличивает выделенную область смысловыми единицами. Просто продолжайте нажимать кнопку до тех пор, пока не выбирает то, что вы хотите «

Так что я хочу сделать Cs Cw быть умнее:. Сочетать с расширить область

курсор между символом„ч“и«я. «в слове„это“еще раз, моя цель:

, когда я печатаю Cs Cw, слово„это“будет текст для поиска,

снова будет» это-это-а -текст,

снова будет 'это-это-текст "',

снова будет 'печать "это-это-текст"',

снова будет«(печать «this- это-текст ")»,

.... (ведет себя как расширить область, может быть, это не очень хороший пример ...)

Как я нахожу иногда расширить область является весьма полезным в поиске текстов , Я надеюсь, что кто-то может написать некоторые коды, чтобы достичь этого для меня, так как я новичок в emacs и elisp. Спасибо, пожалуйста, простите мой сломанный английский! :)

+0

сделать запрос функции на странице проекта github расширенного региона. Это должно быть полезно. –

ответ

3

Там очень простой пакет под названием thingopt, который использует thingatpt сделать что-то подобное для расширения-региона. Я довольно давно использую modified version, что добавляет поддержку isearch. Этот вопрос напомнил мне вилку и выставил запрос на тяну. У меня есть следующие в моем init.el:

(define-key isearch-mode-map (kbd "C-S-s") 'upward-isearch-thing) 
(define-key isearch-mode-map (kbd "M-3") 'upward-isearch-thing) 

(global-set-key (kbd "C-S-s") 'upward-mark-thing) 
(global-set-key (kbd "M-3") 'upward-mark-thing) 

(setq upward-mark-thing-list 
     '(email 
     url 
     word 
     symbol 
     string 
     (up-list . *) 
     paragraph 
     )) 

Я пытался расширить-область, и я думаю, что я хотел бы это лучше, но выглядит гораздо более сложным, и я должен был бы добавить ISearch прежде чем я начну использовать его. Надеюсь, я (или кто-то другой) когда-нибудь обгонит его.

+0

Я попробовал вашу вещь сейчас. Он отлично работает. Да, и расширение области, и thingopt отличные, но расширение региона больше предназначено для регионов. Thingopt может быть достаточно сильным в поиске. Спасибо, jpkotta. – Boris

1
(defadvice isearch-yank-word-or-char (before move-to-beginning-of-word) 
    (unless (eq last-command this-command) 
    (goto-char (car (bounds-of-thing-at-point 'word))))) 
(ad-activate 'isearch-yank-word-or-char) 
+0

Спасибо за ответ.Но кажется, что только работа для C-s C-w один раз (выбор текущего слова под курсором). Когда я продолжаю печатать C-w после C-s, текст для поиска, похоже, не ведет себя как плагин 'expand-region' (не пытается расширить область). – Boris