Подстановка имен файлов с помощью чего-то вроде Tab
Подстановка имен файлов с помощью чего-то вроде Tab
В юникс шелле главная суперфункция состоит в том, что набираешь одну две буквы имени файла, нажимаешь Tab, он дополняет имя файла в командной строке. Если есть неоднозначность, то дополняет до того места, покуда ее нет. Работает интеллектуально, понимает относительные пути, какая текущая директория и пр. Для первого имени файла в строке (запускаемой программы) выдает имена файлов из нескольких директорий, которые есть в пути. Кроме того, есть функция по второму tab показать все файлы, которые удовлетворяют названным буквам, если есть неоднозначность.
Благодаря этой функции в шелле можно работать без оболочек типа mc. Кнопка Tab используется непрерывно, в 70% случаев.
Вот бы приделать что-то подобное к командной строке FAR, это, мне кажется, вывело бы его usability на новый уровень. Нужно только придумать, как это сделать без противоречия с существующим интерфейсом. Когда панели отключены, можно реагировать на Tab. Если включены, то, например, на Shift-Tab.
Благодаря этой функции в шелле можно работать без оболочек типа mc. Кнопка Tab используется непрерывно, в 70% случаев.
Вот бы приделать что-то подобное к командной строке FAR, это, мне кажется, вывело бы его usability на новый уровень. Нужно только придумать, как это сделать без противоречия с существующим интерфейсом. Когда панели отключены, можно реагировать на Tab. Если включены, то, например, на Shift-Tab.
Ну, ей и пользуешься всегда, но кнопок в 5 раз больше. А операция - очень частая. К тому же неудобства - нужно ходить по директориям в двух панелях, Ctrl-PgUp/PgDn вместо Enter, чтобы половину строки случайно не запустить по Enter. Если знаешь, как файл называется, гораздо быстрее две буквы и Tab. Короче, удобно это в unix-shell, пользоваться стал им недавно по служебной необходимости, до этого 20 лет Norton-FAR.musor wrote:А комбинация "Alt+буквы" не устраивает?!
Изменение, которое я предлагаю, довольно революционное, но может оказаться _очень_ удобным.
P.S. понятно, что если налепить плагинов, которых не будет в стандартной поставке, никто этим пользоваться массово не будет. Нужно как базовая функциональность самого FAR.
- HaRT
- Moderator
- Posts: 10865
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Спасибо, в сочетании с Autocompletion уже кое-что.
Но ни один из этих трёх плагинов, к сожалению, не умеет, подобно bash completion, дополнять %comm до %CommonProgramFiles%, не будет для стандартных утилит дополнять их длинные названия опций и т.п.
См. тж. тему "поддержка родного виндового autocomplete"
Но ни один из этих трёх плагинов, к сожалению, не умеет, подобно bash completion, дополнять %comm до %CommonProgramFiles%, не будет для стандартных утилит дополнять их длинные названия опций и т.п.
См. тж. тему "поддержка родного виндового autocomplete"
Я пользуюсь VIM completion. Очень доволен.HaRT wrote:Но ни один из этих трёх плагинов, к сожалению, не умеет, подобно bash completion, дополнять %comm до %CommonProgramFiles%, не будет для стандартных утилит дополнять их длинные названия опций и т.п.
А дополнять названия опций — это странно.
Во-первых, у стандартных утилит все опции (за редким исключением) состоят из одной буквы, типа /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
- HaRT
- Moderator
- Posts: 10865
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Это, знаете ли, зависит от ширины стандарта. Для меня, например, текстовые утилиты GNU - тоже стандартные, а у них опции бывают довольно длинные: например, --traditional, --hide-control-chars и т.п.al666 wrote:Во-первых, у стандартных утилит все опции (за редким исключением) состоят из одной буквы, типа /s.
Ну, кому фигня, а кому - удобная и полезная фишка.al666 wrote:Во-вторых, если такую фигню и делать - то только опционально и с настраиваемым перечнем наименований для дополнения.
Разумеется, она должна быть настраиваемой, в том-то вся и сила!
Если выражаться в терминах Фара, то bash completion силён своими плагинами второго уровня.
Мы и сами с усами! Дарю (AS IS) макрос, чтобы совмещать достоинства VIM Completion и Autocomplete:al666 wrote:Edit: Дарю макрос, чтобы VIM completion (хоткей - F11 V) вызывался по Tab'у только если одна или обе панели погашены:
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
есть целых три плагина на эту тему, но все три уродские.
autocomplete не работает в диалогах и лочит файлы, то есть удалить папку в которой он использовался можно только после перезапуска фара, ну или натравить комплит на другую папку, в любом случае глюк а сырцов нету.
vim не работает в редакторе, не различает префиксов то есть после сd может выдать имя файла, после имени диретории не подставляет слэш, оба они дополняют не до общей подходящей части а до первого подходящего файла и вообще этот я снес давно.
Но! к нему есть сырцы...
autocomplete не работает в диалогах и лочит файлы, то есть удалить папку в которой он использовался можно только после перезапуска фара, ну или натравить комплит на другую папку, в любом случае глюк а сырцов нету.
vim не работает в редакторе, не различает префиксов то есть после сd может выдать имя файла, после имени диретории не подставляет слэш, оба они дополняют не до общей подходящей части а до первого подходящего файла и вообще этот я снес давно.
Но! к нему есть сырцы...
- HaRT
- Moderator
- Posts: 10865
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Вот макрос, который пытается выжать, что возможно, из всех трёх (u — Autocomplete; n — FCompl; с — 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"
-
- Posts: 7
- Joined: Wed 07 Mar, 2007 14:15
- Contact:
-
- Posts: 7
- Joined: Wed 07 Mar, 2007 14:15
- Contact: