clink - поведение bash/readline для cmd.exe
clink - поведение bash/readline для cmd.exe
Last edited by techie on Sat 11 Oct, 2014 08:03, edited 1 time in total.
- HaRT
- Moderator
- Posts: 10863
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: clink - поведение bash/readline для cmd.exe
Подтверждаю, для тех, кто привык работать в bash, штука очень полезная.
К сожалению, некоторых вкусностей в ней тоже нет, например,
К сожалению, некоторых вкусностей в ней тоже нет, например,
HISTCONTROL=erasedups
. Или мои сведения устарели?Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: clink - поведение bash/readline для cmd.exe
А расскажите для тех кто не привык работать в баше, что в этом клинке?
Беглый просмотр показал
- настраиваемое автодополнение командной строки, по типу YAC
- особые шорткаты для работы с командной строкой (перемещение, выделение, блоки, история)
Conemu поддерживает clink.
Но насколько я понимаю, в фаре всё это неприменимо?
Беглый просмотр показал
- настраиваемое автодополнение командной строки, по типу YAC
- особые шорткаты для работы с командной строкой (перемещение, выделение, блоки, история)
Conemu поддерживает clink.
Но насколько я понимаю, в фаре всё это неприменимо?
Re: clink - поведение bash/readline для cmd.exe
Для фара - полезна идея по "уточнению" работы дополнения ком.строки. Не просто из истории, а и умное дополнение параметров для разных исполняемых модулей (естественно настраиваемое).
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: clink - поведение bash/readline для cmd.exe
Во-первых, начну с того, с чем Far не справляется и почему я периодически отстреливаю cmd.exe из текущего окружения и стартую команды в нём.
Это отсутствие в Far автоматического буфера с выводом внешней команды. Мне, например, надо работать с SSH консолью на удалённом сервере, и запускать скрипты, которые при ошибке выдают пару страниц текста. Far не позволяет проскроллить вывод обратно, если ты не позаботился добавить view:< префикс в начале, а тогда ты интерактивные части не видишь.
Но cmd.exe редкостный отстой, потому что:
- история между сессиями не сохраняется
- не работает вставка из буфера с клавиатуры - приходится постоянно мышевозюкать
- нет удобняшек типа ctrl-pgup
- дурацкие предложения типа Terminate batch job?
clink это фиксит. Плюс у него есть API на Lua если чё.
Это отсутствие в Far автоматического буфера с выводом внешней команды. Мне, например, надо работать с SSH консолью на удалённом сервере, и запускать скрипты, которые при ошибке выдают пару страниц текста. Far не позволяет проскроллить вывод обратно, если ты не позаботился добавить view:< префикс в начале, а тогда ты интерактивные части не видишь.
Но cmd.exe редкостный отстой, потому что:
- история между сессиями не сохраняется
- не работает вставка из буфера с клавиатуры - приходится постоянно мышевозюкать
- нет удобняшек типа ctrl-pgup
- дурацкие предложения типа Terminate batch job?
clink это фиксит. Плюс у него есть API на Lua если чё.
- HaRT
- Moderator
- Posts: 10863
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: clink - поведение bash/readline для cmd.exe
Это уже несколько лет не так, поищите "/w".techie wrote:запускать скрипты, которые при ошибке выдают пару страниц текста. Far не позволяет проскроллить вывод обратно, если ты не позаботился добавить view:< префикс в начале
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: clink - поведение bash/readline для cmd.exe
О, крутяк. Списбо. Только кто ж об этом знает? =)
Есть, правда, один ньюансик - теперь уродливый скролл бар портит вид панелей. Можно сделать так, чтобы он появлялся только когда панели выключены?
Есть, правда, один ньюансик - теперь уродливый скролл бар портит вид панелей. Можно сделать так, чтобы он появлялся только когда панели выключены?
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: clink - поведение bash/readline для cmd.exe
>Можно сделать так, чтобы он появлялся только когда панели выключены?
Вопрос когда-то подымался, с точки зрения разработчиков овчинка не стоит выделки.
Попробуйте написать на мантис.
Вопрос когда-то подымался, с точки зрения разработчиков овчинка не стоит выделки.
Попробуйте написать на мантис.
Re: clink - поведение bash/readline для cmd.exe
Эээ, попытался найти - вдруг баг уже существует. Там поиск есть вообще на этом Мантисе? http://bugs.farmanager.com/my_view_page.php
clink - поведение bash/readline для cmd.exe
На всякий случай напишу для следующих интересующихся.
Conemu убирает скролл-бар, возможность пролистывать весь вывод остается
Last edited by Xerox on Mon 25 Nov, 2019 12:01, edited 2 times in total.
clink - поведение bash/readline для cmd.exe
борюсь с ненужными бордерами и рамками такой шнягой на C#:
кусок немного вырван из контекста, но вроде все понятно, и внизу там ссылки по теме
clink - вещь крайне полезная, Сишная + на Луа, думал уже как их обьединить с ФАРом, не придумал.
Так как в Сях не силен, как и в написании чего-то шибко умного и консольного.
Т.е., как, например, показать clink-овский "Ctrl-R" (история как в баше) в ФАРе, не выходя собственно из ФАРа?
Думаю что для ФарГруповских профессионалов в консольных Сях, не составило бы особого труда это сделать,
но по себе в первую очередь знаю что по времени мало чего можно успевать будь ты хоть 100 раз профи
Code: Select all
private static void _borderless_far(string[] args)
{
const int GWL_STYLE = (-16);
const int GWL_EXSTYLE = (-20);
int the_pid = -1, parent_pid = -1;
IntPtr hWnd = IntPtr.Zero;
Console.WriteLine("hello, we have {0} args", args.Length);
System.Diagnostics.Process p_self = System.Diagnostics.Process.GetCurrentProcess(), p_parent = null;
if (args.Length > 0 && int.TryParse(args[0], out the_pid))
{
Console.WriteLine("The FAR PID is: {0}", the_pid);
System.Diagnostics.Process p1 = System.Diagnostics.Process.GetProcessById(the_pid);
hWnd = p1.MainWindowHandle;
}
else
{
p_parent = KPDT.KSystem.GetParentProcess(p_self.Id);
parent_pid = p_parent.Id;
Console.WriteLine("Parent process name is {0}", p_parent.ProcessName);
if (p_parent.ProcessName.ToLower() == "far")
hWnd = p_parent.MainWindowHandle;
}
KPDT.WindowStyles wndStyle = (KPDT.WindowStyles)KPDT.KSystem.GetWindowLongPtr(hWnd, GWL_STYLE);
Console.WriteLine("Style: {0}", wndStyle);
wndStyle &= ~KPDT.WindowStyles.WS_HSCROLL;
wndStyle &= ~KPDT.WindowStyles.WS_VSCROLL;
wndStyle &= ~KPDT.WindowStyles.WS_BORDER;
wndStyle &= ~KPDT.WindowStyles.WS_THICKFRAME;
wndStyle &= ~KPDT.WindowStyles.WS_CAPTION;
wndStyle &= ~KPDT.WindowStyles.WS_EX_LEFTSCROLLBAR;
wndStyle &= ~KPDT.WindowStyles.WS_EX_RIGHTSCROLLBAR;
IntPtr res_1 = KPDT.KSystem.SetWindowLongPtr(hWnd, GWL_STYLE, (IntPtr)wndStyle);
KPDT.WindowStyles wndStyleEx = (KPDT.WindowStyles)KPDT.KSystem.GetWindowLongPtr(hWnd, GWL_EXSTYLE);
Console.WriteLine("Style ext: {0}", wndStyleEx);
wndStyleEx &= ~KPDT.WindowStyles.WS_EX_LEFTSCROLLBAR;
wndStyleEx &= ~KPDT.WindowStyles.WS_EX_RIGHTSCROLLBAR;
wndStyleEx &= ~KPDT.WindowStyles.WS_EX_STATICEDGE;
wndStyleEx &= ~KPDT.WindowStyles.WS_EX_WINDOWEDGE;
wndStyleEx &= ~KPDT.WindowStyles.WS_EX_CLIENTEDGE;
wndStyleEx &= ~KPDT.WindowStyles.WS_EX_APPWINDOW;
IntPtr res_2 = KPDT.KSystem.SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)wndStyleEx);
Console.WriteLine("Successfully ({0}, {1}) set window styles for process {2}/{3}", res_1, res_2, p_parent == null ? "(given)" : p_parent.ProcessName, parent_pid);
// https://docs.microsoft.com/en-us/windows/win32/winmsg/window-styles
// https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles
// https://www.experts-exchange.com/questions/21297321/GetWindowLong-GWL-EXSTYLE-Style-Question.html
// http://pinvoke.net/default.aspx/Enums/WindowStyles.html
// GetWindowLongPtr(hwnd, GWL_STYLE && !(WS_BORDER | WS_SIZEBOX | WS_DLGFRAME)));
// System.Diagnostics.Process[] pp = System.Diagnostics.Process.GetProcessesByName("far");
// const UInt32 WS_VISIBLE = 0x10000000;
// KPDT.KSystem.SetWindowLong(windowHandle, GWL_STYLE, (WS_VISIBLE));
// KPDT.KSystem.MakeExternalWindowBorderless(windowHandle);
}
clink - вещь крайне полезная, Сишная + на Луа, думал уже как их обьединить с ФАРом, не придумал.
Так как в Сях не силен, как и в написании чего-то шибко умного и консольного.
Т.е., как, например, показать clink-овский "Ctrl-R" (история как в баше) в ФАРе, не выходя собственно из ФАРа?
Думаю что для ФарГруповских профессионалов в консольных Сях, не составило бы особого труда это сделать,
но по себе в первую очередь знаю что по времени мало чего можно успевать будь ты хоть 100 раз профи