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

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

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

Post by jed » Wed 21 Jan, 2009 11:59

Хочу, нажав например CtrlF3, выделить все вхождения слова под курсором, в редакторе, на текущем экране.
Как вариант еще и сразу перескочить при этом к следующему вхождению.
Есть такое в каком-либо плагине? Чего-то не нашел.

dolzenko
Posts: 452
Joined: Wed 19 Apr, 2006 14:42
Location: Ростов-на-Дону

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

Post by dolzenko » Wed 21 Jan, 2009 12:14

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

PS. а если серъезно - то не знаю :?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Wed 21 Jan, 2009 12:22

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

Здесь "s" - это хоткей S&R в меню плагинов. Еще надо донастроить сам плагин, смотри его настройки - чтобы текущее слово попадало сразу в поле ввода диалога поиска. Еще там есть вариант выделять само это текущее слово или нет (я использую "выделять", так в Вижуал Студии, но это дело вкуса).

User avatar
HaRT
Moderator
Posts: 8025
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 99 times

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

Post by HaRT » Wed 21 Jan, 2009 12:42

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

Однако, если я правильно понял, весь пафос вопроса в том, чтобы подсвечивать все вхождения слова под курсором. Если бы нашёлся программист-энтузиаст, можно было бы попытаться добавить такую функциональность в Visualizer
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Wed 21 Jan, 2009 14:39

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

Code: Select all

8. Hilights words on screen the same as under cursor

User avatar
HaRT
Moderator
Posts: 8025
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 99 times

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

Post by HaRT » Wed 21 Jan, 2009 15:11

Вот спасибо!
Фар есть инструмент, а не нянька. © 2009 DrKnS

jed
Posts: 5
Joined: Sat 02 Aug, 2008 16:43

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

Post by jed » Fri 23 Jan, 2009 07:26

Спасибо. "Крест" как раз то что нужно.

User avatar
faruh
Posts: 50
Joined: Sat 04 Apr, 2009 19:46

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

Post by faruh » Thu 17 Dec, 2015 10:09

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

как последняя альтернатива
dolzenko wrote: пишем макрос который делает временную "вырожденную" схему для колорера
п.с. прошу сильно не бить ногами, так как длительное время не следил за изменениями в комьюнити

User avatar
cmd.exe
Posts: 317
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 168 times
Been thanked: 5 times
Contact:

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

Post by cmd.exe » Thu 17 Dec, 2015 12:02

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: 50
Joined: Sat 04 Apr, 2009 19:46

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

Post by faruh » Thu 17 Dec, 2015 12:25

поставил
cmd.exe wrote: CrestII
"крест" рисует, но не могу найти ничего похожего на
8. Hilights words on screen the same as under cursor
не подскажите как включить?

User avatar
faruh
Posts: 50
Joined: Sat 04 Apr, 2009 19:46

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

Post by faruh » Thu 17 Dec, 2015 12:34

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: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Thu 17 Dec, 2015 12:40

faruh wrote:нашел "hilight all same words on screen" в файле !!todo к Crest
как понимаю фича не реализована
реализована и она даже работает в последнем фаре.

User avatar
faruh
Posts: 50
Joined: Sat 04 Apr, 2009 19:46

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

Post by faruh » Thu 17 Dec, 2015 12:52

zg wrote: даже работает
работает. спасибо

User avatar
faruh
Posts: 50
Joined: Sat 04 Apr, 2009 19:46

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

Post by faruh » Thu 17 Dec, 2015 13:04

еще можно использовать EdtFind
viewtopic.php?t=7587

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Thu 17 Dec, 2015 13:51

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

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

Shmuel
Posts: 5098
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

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

Post by Shmuel » Thu 17 Dec, 2015 15:29

Вместо

Code: Select all

color=
  Flags:bit64.bor F.FCF_FG_4BIT,F.FCF_BG_4BIT
  ForegroundColor:0x1
  BackgroundColor:0xf
можно просто color=0xf1.

Post Reply

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