Подстановка имен файлов с помощью чего-то вроде Tab

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
Fedor
Posts: 13
Joined: Fri 17 Jun, 2005 17:59

Подстановка имен файлов с помощью чего-то вроде Tab

Post by Fedor »

В юникс шелле главная суперфункция состоит в том, что набираешь одну две буквы имени файла, нажимаешь Tab, он дополняет имя файла в командной строке. Если есть неоднозначность, то дополняет до того места, покуда ее нет. Работает интеллектуально, понимает относительные пути, какая текущая директория и пр. Для первого имени файла в строке (запускаемой программы) выдает имена файлов из нескольких директорий, которые есть в пути. Кроме того, есть функция по второму tab показать все файлы, которые удовлетворяют названным буквам, если есть неоднозначность.

Благодаря этой функции в шелле можно работать без оболочек типа mc. Кнопка Tab используется непрерывно, в 70% случаев.

Вот бы приделать что-то подобное к командной строке FAR, это, мне кажется, вывело бы его usability на новый уровень. Нужно только придумать, как это сделать без противоречия с существующим интерфейсом. Когда панели отключены, можно реагировать на Tab. Если включены, то, например, на Shift-Tab.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Post by DrKnS »

Плугины+макросы :)
musor
Posts: 53
Joined: Wed 31 Aug, 2005 07:20
Location: г. Красноярск, Сибирь однако

Post by musor »

А комбинация "Alt+буквы" не устраивает?!
Fedor
Posts: 13
Joined: Fri 17 Jun, 2005 17:59

Post by Fedor »

musor wrote:А комбинация "Alt+буквы" не устраивает?!
Ну, ей и пользуешься всегда, но кнопок в 5 раз больше. А операция - очень частая. К тому же неудобства - нужно ходить по директориям в двух панелях, Ctrl-PgUp/PgDn вместо Enter, чтобы половину строки случайно не запустить по Enter. Если знаешь, как файл называется, гораздо быстрее две буквы и Tab. Короче, удобно это в unix-shell, пользоваться стал им недавно по служебной необходимости, до этого 20 лет Norton-FAR.

Изменение, которое я предлагаю, довольно революционное, но может оказаться _очень_ удобным.

P.S. понятно, что если налепить плагинов, которых не будет в стандартной поставке, никто этим пользоваться массово не будет. Нужно как базовая функциональность самого FAR.
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Post by HaRT »

Fedor
На эту тему есть как минимум два плагина: Autocomplete и Filename Completion - оба не настолько умны и гибки, как bash completion в Linux'е.
Если бы кто-то действительно перенёс возможности bash completion в Фар, цены б тому человеку не было!
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

Смотри плагин "VIM Completion", делает именно то что тебе надо - также умеет это делать в диалогах если скоприровать его в DialogManager, плюс плагин идёт с сорцами.
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Post by HaRT »

Спасибо, в сочетании с Autocompletion уже кое-что.
Но ни один из этих трёх плагинов, к сожалению, не умеет, подобно bash completion, дополнять %comm до %CommonProgramFiles%, не будет для стандартных утилит дополнять их длинные названия опций и т.п. :(

См. тж. тему "поддержка родного виндового autocomplete"
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

ну добавить поддержку %* думаю не имеет особой сложности, главное захотеть.
al666
Posts: 239
Joined: Mon 04 Jul, 2005 08:55
Been thanked: 1 time

Post by al666 »

HaRT wrote:Но ни один из этих трёх плагинов, к сожалению, не умеет, подобно bash completion, дополнять %comm до %CommonProgramFiles%, не будет для стандартных утилит дополнять их длинные названия опций и т.п. :(
Я пользуюсь VIM completion. Очень доволен.

А дополнять названия опций — это странно.
Во-первых, у стандартных утилит все опции (за редким исключением) состоят из одной буквы, типа /s.
Во-вторых, если такую фигню и делать - то только опционально и с настраиваемым перечнем наименований для дополнения.

Edit: Дарю макрос, чтобы VIM completion (хоткей - F11 V) вызывался по Tab'у только если одна или обе панели погашены:

Code: Select all

REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Tab]
"Sequence"="$if(!PPanel.Visible) F11 v $else Tab $end"
"DisableOutput"=dword:00000001
"NotEmptyCommandLine"=dword:00000001
"NoSendKeysToPlugins"=dword:00000001
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Post by HaRT »

al666 wrote:Во-первых, у стандартных утилит все опции (за редким исключением) состоят из одной буквы, типа /s.
Это, знаете ли, зависит от ширины стандарта. Для меня, например, текстовые утилиты GNU - тоже стандартные, а у них опции бывают довольно длинные: например, --traditional, --hide-control-chars и т.п.
al666 wrote:Во-вторых, если такую фигню и делать - то только опционально и с настраиваемым перечнем наименований для дополнения.
Ну, кому фигня, а кому - удобная и полезная фишка.
Разумеется, она должна быть настраиваемой, в том-то вся и сила!
Если выражаться в терминах Фара, то bash completion силён своими плагинами второго уровня.
al666 wrote:Edit: Дарю макрос, чтобы VIM completion (хоткей - F11 V) вызывался по Tab'у только если одна или обе панели погашены:
Мы и сами с усами! Дарю (AS IS) макрос, чтобы совмещать достоинства VIM Completion и Autocomplete:

Code: Select all

REGEDIT4

[HKEY_CURRENT_USER\Software\Far\PluginHotkeys\Plugins/AutoComplete/complete.dll]
"Hotkey"="u"
"ConfHotkey"="u"

[HKEY_CURRENT_USER\Software\Far\PluginHotkeys\Plugins/DialogManager/Formats/ViCom/vicom.dll]
"Hotkey"="c"

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Tab]
@=""
"Sequence"="%s = CmdLine.Value; F11 u n $If ( CmdLine.Value == %s ) F11 c $If ( CmdLine.Value == %s ) Tab $End $End"
"Description"="Completion: first, try Autocomplete; second, try VIM Completion; otherwise fallback to default Tab"
"NotEmptyCommandLine"=dword:00000001
"DisableOutput"=dword:00000001
Onanymous
Posts: 76
Joined: Wed 16 Mar, 2005 11:18
Contact:

Post by Onanymous »

есть целых три плагина на эту тему, но все три уродские.
autocomplete не работает в диалогах и лочит файлы, то есть удалить папку в которой он использовался можно только после перезапуска фара, ну или натравить комплит на другую папку, в любом случае глюк а сырцов нету.
vim не работает в редакторе, не различает префиксов то есть после сd может выдать имя файла, после имени диретории не подставляет слэш, оба они дополняют не до общей подходящей части а до первого подходящего файла и вообще этот я снес давно.
Но! к нему есть сырцы...
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Post by HaRT »

Вот макрос, который пытается выжать, что возможно, из всех трёх (uAutocomplete; nFCompl; сVIM Completion):

Code: Select all

REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Tab]
"Sequence"="%p = CmdLine.CurPos; %s = CmdLine.Value; %c = substr ( %s, %p - 2, 1 ); $If ( 1 == %p || \" \" == %c ) Tab $Exit $End F11 $If ( CheckHotkey ( \"u\" ) ) u n $Else Esc $End $If ( CmdLine.Value == %s ) F11 $If ( CheckHotkey ( \"n\" ) ) n n $Else Esc $End $If ( CmdLine.Value == %s ) F11 $If ( CheckHotkey ( \"c\" ) ) c $Else Esc $End $If ( CmdLine.Value == %s ) Tab $End $End $End"
"NotEmptyCommandLine"=dword:00000001
"DisableOutput"=dword:00000001
"Description"="Completion: first, try Autocomplete; second, try FCompl; third, VIM Completion; otherwise fallback to default Tab"
@="Completion: first, try Autocomplete; second, try FCompl; third, try VIM Completion; otherwise fallback to default Tab"
TheDeadOne
Posts: 7
Joined: Wed 07 Mar, 2007 14:15
Contact:

Post by TheDeadOne »

al666
У меня этот макрос не работает :(

А сам я в FAR'овских макросах ничерта не соображаю.
User avatar
[e]Bu$ter
Posts: 792
Joined: Mon 30 May, 2005 23:05
Location: Беларусь, Минск
Contact:

Post by [e]Bu$ter »

TheDeadOne
Из второго следует первое.
TheDeadOne
Posts: 7
Joined: Wed 07 Mar, 2007 14:15
Contact:

Post by TheDeadOne »

[e]Bu$ter

Логика где? У одного человека работает, он это экспортирует, я импортирую и у меня не работает.
Post Reply

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