выделить все вхождения слова под курсором

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
jed
Posts: 5
Joined: Sat 02 Aug, 2008 16:43

выделить все вхождения слова под курсором

Post by jed »

Хочу, нажав например CtrlF3, выделить все вхождения слова под курсором, в редакторе, на текущем экране.
Как вариант еще и сразу перескочить при этом к следующему вхождению.
Есть такое в каком-либо плагине? Чего-то не нашел.
dolzenko
Posts: 452
Joined: Wed 19 Apr, 2006 14:42
Location: Ростов-на-Дону

Re: выделить все вхождения слова под курсором

Post by dolzenko »

Ну это просто, пишем макрос который делает временную "вырожденную" схему для колорера, включающую в себя только выделение слова под курсором, затем применяем эту схему к текущему файлу.

PS. а если серъезно - то не знаю :?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: выделить все вхождения слова под курсором

Post by NightRoman »

Про выделение всех слов - не знаю. Переход на следующее вхождение у меня реализован макросом CtrlF3 (именно) с плагином S&R:
F11 s 1 Enter

Здесь "s" - это хоткей S&R в меню плагинов. Еще надо донастроить сам плагин, смотри его настройки - чтобы текущее слово попадало сразу в поле ввода диалога поиска. Еще там есть вариант выделять само это текущее слово или нет (я использую "выделять", так в Вижуал Студии, но это дело вкуса).
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Re: выделить все вхождения слова под курсором

Post by HaRT »

NightRoman wrote:надо донастроить сам плагин, смотри его настройки - чтобы текущее слово попадало сразу
Ну или можно воспользоваться в его же меню пунктами 5/6 — они как раз для этого вне зависимости от настроек. Но тогда слово не попадёт в историю того, что искали.

Однако, если я правильно понял, весь пафос вопроса в том, чтобы подсвечивать все вхождения слова под курсором. Если бы нашёлся программист-энтузиаст, можно было бы попытаться добавить такую функциональность в Visualizer
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: выделить все вхождения слова под курсором

Post by zg »

плагин «крест»:

Code: Select all

8. Hilights words on screen the same as under cursor
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Re: выделить все вхождения слова под курсором

Post by HaRT »

Вот спасибо!
Фар есть инструмент, а не нянька. © 2009 DrKnS
jed
Posts: 5
Joined: Sat 02 Aug, 2008 16:43

Re: выделить все вхождения слова под курсором

Post by jed »

Спасибо. "Крест" как раз то что нужно.
User avatar
faruh
Posts: 65
Joined: Sat 04 Apr, 2009 19:46
Has thanked: 1 time

выделить все вхождения слова под курсором

Post by faruh »

что посоветуете для Фар 3 по сабжу (плагин, макрос, etc.)
может кто поделиться используемым решением

как последняя альтернатива
dolzenko wrote: пишем макрос который делает временную "вырожденную" схему для колорера
п.с. прошу сильно не бить ногами, так как длительное время не следил за изменениями в комьюнити
User avatar
cmd.exe
Posts: 378
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 181 times
Been thanked: 10 times
Contact:

выделить все вхождения слова под курсором

Post by cmd.exe »

Crest Или CrestII
Под x86 работают, и использовал когда-то. Есть исходники, могу собрать для вас под x64.
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates
User avatar
faruh
Posts: 65
Joined: Sat 04 Apr, 2009 19:46
Has thanked: 1 time

выделить все вхождения слова под курсором

Post by faruh »

поставил
cmd.exe wrote: CrestII
"крест" рисует, но не могу найти ничего похожего на
8. Hilights words on screen the same as under cursor
не подскажите как включить?
User avatar
faruh
Posts: 65
Joined: Sat 04 Apr, 2009 19:46
Has thanked: 1 time

выделить все вхождения слова под курсором

Post by faruh »

zg wrote: Hilights words on screen the same as under cursor
нашел "hilight all same words on screen" в файле !!todo к Crest. как понимаю фича не реализована
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

выделить все вхождения слова под курсором

Post by zg »

faruh wrote:нашел "hilight all same words on screen" в файле !!todo к Crest
как понимаю фича не реализована
реализована и она даже работает в последнем фаре.
User avatar
faruh
Posts: 65
Joined: Sat 04 Apr, 2009 19:46
Has thanked: 1 time

выделить все вхождения слова под курсором

Post by faruh »

zg wrote: даже работает
работает. спасибо
User avatar
faruh
Posts: 65
Joined: Sat 04 Apr, 2009 19:46
Has thanked: 1 time

выделить все вхождения слова под курсором

Post by faruh »

еще можно использовать EdtFind
http://forum.farmanager.com/viewtopic.php?t=7587
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

выделить все вхождения слова под курсором

Post by zg »

простейший макрос пишется от силы за пол часа:

Code: Select all

F=far.Flags
color=
  Flags:bit64.bor F.FCF_FG_4BIT,F.FCF_BG_4BIT
  ForegroundColor:0x1
  BackgroundColor:0xf
colorguid=win.Uuid "507CFA2A-3BA3-4f2b-8A80-318F5A831235"
word=false
Macro
  area:"Editor"
  key:"F5"
  description:"Color Word Under Cursor"
  action:->
    if word then word=false
    else
      ei=editor.GetInfo!
      pos,row=ei.CurPos,ei.CurLine
      line=editor.GetString!.StringText
      if pos<=line\len()+1
        slab=pos>1 and line\sub(1,pos-1)\match('[%w_]+$') or ""
        tail=line\sub(pos)\match('^[%w_]+') or ""
        word=slab..tail
      if word\len()<=0 then word=false
Event
  group:"EditorEvent"
  action:(id,event,param)->
    if event==F.EE_REDRAW
      if word
        ei=editor.GetInfo!
        start,finish=ei.TopScreenLine,math.min ei.TopScreenLine+ei.WindowSizeY,ei.TotalLines
        for ii=start,finish
          line,pos=editor.GetString(-1,ii).StringText,1
          while true
            jj,kk,curr=line\cfind("([%w_]+)",pos)
            if not jj then break
            if curr==word then editor.AddColor ei.EditorID,ii,jj,kk,F.ECF_AUTODELETE,color,100,colorguid
            pos=kk+1
Post Reply

Return to “Предложения и идеи”