Есть ли альтернатива Emacs?
JB требует VPN.
VS требует Windows.
VSCode сливает всё на сервер дополнениями.
Что выбрать, чтобы надолго и минимум зависимости проекта от компаний?
Vim с плагинами - инородная хрень. Голый Vim для front/back -> (‿|‿)
JB требует VPN.
VS требует Windows.
VSCode сливает всё на сервер дополнениями.
Что выбрать, чтобы надолго и минимум зависимости проекта от компаний?
Vim с плагинами - инородная хрень. Голый Vim для front/back -> (‿|‿)
Fedora 41. Делаю по букварю https://docs.fedoraproject.org/en-US/quick-docs/samba/ . Пытаюсь расшарить каталог на отдельном разделе, примонтированном в /mnt/Disk. На шару не заходит с другого компа, как и с телефона. Пишет нет прав доступа к папке. Если локально заходить, файл или папка smb://fedora.local/share не существует. Права
drwsrwsr-x. 2 igorka share 4096 дек 10 21:09 share
Но если сделать каталог в домашней директории и поменять в конфиге самбы путь, то все работает. Как так то? Сильно не пинайте. Я только учусь.
Здравствуйте, теребятки! С вами наша непостоянная рубрика ненормальное программирование.
В качестве пет-проекта я потихоньку пилю собственный Ada-подобный ЯП. Планов на фичи языка очень много, но пока он по фичам не далеко ушел от ранних вариантов сишечки. Однако сегодня не об этом. Сегодня я вам хочу рассказать о генерации кода.
Генерация кода в настоящее время реализована из синтаксического дерева, без трансляции в отдельное представление для оптимизации. Обычно так не делают, так делать неправильно. Но реализовывать полноценную систему анализа графа управления в мои задачи не входило, поэтому я постарался выжать эффективность насколько возможно из трансляции, управляемой синтаксическим деревом.
Сегодня мы посмотрим, что получается, если решать задачу заведомо неподходящим способом.
Некоторые используемые приёмы оптимизации:
Далее я покажу примеры, как генератор кода устраняет избыточные загрузки значений. Про остальные пункты расскажу как-нибудь в другой раз. (Примерно через никогда.)
Генератор кода устранил 4 инструкции mov EAX, dword [EBP+8]
, так как увидел, что значение переменной Index уже загружено в регистр.
Функция:
char @DictGetFullyQualifiedName(word D)
when D >= nDict:
StopInternal(__FILE__, __LINE__);
word Index = Dict[D].FullyQualifiedName;
when Index != 0:
return @Char[Index];
char Buff[nBUFF];
strbuf buf;
strbuf_init(@buf, @Buff, nBUFF);
Dict_MakeFullyQualifiedName(@buf, D);
Index = SaveString0(@Buff);
Dict[D].FullyQualifiedName = Index;
return @Char[Index];
end
Сгенерированный код:
@10342: ; ## DictGetFullyQualifiedName ##
push EBP
mov EBP, ESP
sub ESP, 144
; #line compiler_dict.ctxi:84
mov EAX, dword [EBP+8]
cmp EAX, dword [@@DATA+8476676]
jb @10343
; #line compiler_dict.ctxi:85
push dword 85
push dword @@ROLITERALS+7329
call @10235 ; StopInternal
@10343:
; #line compiler_dict.ctxi:87
mov EAX, dword [EBP+8]
imul EAX, 77
mov EAX, dword [@@DATA+EAX+776684]
mov dword [EBP-4], EAX
; #line compiler_dict.ctxi:88
; Node link reuse in CodePrimaryWrapped
; Переиспользуется значение Index в регистре EAX
test EAX, EAX
je @10346
; #line compiler_dict.ctxi:89
; Node link reuse in CodePrimaryWrapped
; Переиспользуется значение Index в регистре EAX
add EAX, @@DATA+49288
leave
ret 4
@10346:
; #line compiler_dict.ctxi:91
; #line compiler_dict.ctxi:92
; #line compiler_dict.ctxi:93
push dword 128
lea EAX, [EBP-132]
push EAX
lea EAX, [EBP-144]
push EAX
call @10126 ; strbuf_init
; #line compiler_dict.ctxi:94
push dword [EBP+8]
lea EAX, [EBP-144]
push EAX
call @10335 ; Dict_MakeFullyQualifiedName
; #line compiler_dict.ctxi:96
lea EAX, [EBP-132]
push EAX
call @10272 ; SaveString0
mov dword [EBP-4], EAX
; #line compiler_dict.ctxi:97
; Node link reuse in Code_ASSIGN (1)
; Переиспользуется значение Index в регистре EAX
mov EBX, dword [EBP+8]
imul EBX, 77
mov dword [@@DATA+EBX+776684], EAX
; #line compiler_dict.ctxi:98
; Node link reuse in CodePrimaryWrapped
; Переиспользуется значение Index в регистре EAX
add EAX, @@DATA+49288
leave
ret 4
В этом примере есть интересный фрагмент:
mov EAX, dword [EBP+8]
cmp EAX, dword [@@DATA+8476676]
jb @10343
; #line compiler_dict.ctxi:85
push dword 85
push dword @@ROLITERALS+7329
call @10235 ; StopInternal
@10343:
; #line compiler_dict.ctxi:87
mov EAX, dword [EBP+8]
Здесь также можно было бы устранить повторную загрузку mov EAX, dword [EBP+8]
, но это пока не реализовано.
Вот еще пример устранения загрузок локальной переменной. Генератор кода дважды переиспользует значение переменой L в регистре EAX:
word L = strlen(@Dst);
if L > 1 then
if str_has_char(@fpath_p_dir_separators, Dst[L - 1]) == 0 then
strn_cat(@Dst, @fpath_p_dir_separator, Size);
end:if
end:if
; #line include/fpath.ctxi:131
push dword [EBP+8]
call @10013 ; strlen
mov dword [EBP-4], EAX
; #line include/fpath.ctxi:132
; Node link reuse in CodePrimaryWrapped
cmp EAX, 1
jbe @10179
; #line include/fpath.ctxi:133
; Node link reuse in CodePrimaryWrapped
dec EAX
add EAX, dword [EBP+8]
mov AL, byte [EAX]
push EAX
push dword [@@DATA+44]
call @10106 ; str_has_char
В этом примере генератор кода понимает, что можно повторно использовать константу в EAX, но не понимает, что можно повторно использовать указатель в EBX.
Для оптимизации использования указателя необходим анализ, какие переменные могут измениться при сохранении значения регистра, а какие - не могут. Так как сейчас такой анализ не реализован, то любая запись в память сбрасывает привязку вычисленных выражений.
mov EAX, 100000
mov EBX, dword [EBP-8]
mov dword [EBX+44], EAX
; #line compiler_dict.ctxi:117
; Node link reuse in Code_ASSIGN (1)
mov EBX, dword [EBP-8]
mov dword [EBX+32], EAX
; #line compiler_dict.ctxi:118
; Node link reuse in Code_ASSIGN (1)
mov EBX, dword [EBP-8]
mov dword [EBX+36], EAX
; #line compiler_dict.ctxi:119
; Node link reuse in Code_ASSIGN (1)
mov EBX, dword [EBP-8]
mov dword [EBX+40], EAX
; #line compiler_dict.ctxi:120
; Node link reuse in Code_ASSIGN (1)
mov EBX, dword [EBP-8]
mov dword [EBX+12], EAX
; #line compiler_dict.ctxi:121
; Node link reuse in Code_ASSIGN (1)
mov EBX, dword [EBP-8]
mov dword [EBX+16], EAX
; #line compiler_dict.ctxi:122
; Node link reuse in Code_ASSIGN (1)
mov EBX, dword [EBP-8]
mov dword [EBX+20], EAX
; #line compiler_dict.ctxi:123
; Node link reuse in Code_ASSIGN (1)
mov EBX, dword [EBP-8]
mov dword [EBX+24], EAX
Устранение загрузок в условных выражениях:
if rs >= BRACKET_LEX_SIZE | rs < 1 then
StopInternal(__FILE__, __LINE__);
end
mov EAX, dword [EBP-8]
cmp EAX, 3
jae @11156
; Node link reuse in CodePrimaryWrapped
cmp EAX, 1
jae @11155
@11156:
; #line frontend_syn_brackets.ctxi:40
push dword 40
push dword @@ROLITERALS+7664
call @10235 ; StopInternal
@11155:
В теле цикла после проверки условия цикла:
while i < nOperator do
word j = i + 1;
...
mov EAX, dword [EBP-4]
cmp EAX, dword [@@DATA+12180364]
jae @11180
; #line frontend_syn_operators.ctxi:66
; Node link reuse in CodePrimaryWrapped
inc EAX
mov dword [EBP-8], EAX
while i < nOperator do
if Operator[i].Prio > Prio then
...
mov EAX, dword [EBP-8]
cmp EAX, dword [@@DATA+12180364]
jae @11197
; #line frontend_syn_operators.ctxi:120
; Node link reuse in CodePrimaryWrapped
imul EAX, 36
mov EAX, dword [@@DATA+EAX+12178080]
cmp EAX, dword [EBP+12]
jbe @11198
Постоянно встречаются вэйланд-нигилисты, которые его собсно, отрицают, ога.
Мне кажется пришло время пояснить за слона в комнате – GBM.
Знали ли вы, что в вейланде всю основную работу выполняет GBM???
Тоесть, представьте, все окна спавнятся сразу в видеопамяти, минуя процессор, если это игры под вайном/SDL, либо программы с современными тулкитами.
И композитинг тоже выполняется в ЖБМ, сразу в видеокарте, тоесть – отрендеренные окна не возвращаются в операривную память…
И даже (ПРЕДСТАВЬТЕ) все программы, даже в оконном режиме, могут использовать все преимущества DRI3.
Подумайте над этим.
Всем привет,
Имеется сервер OpenConnect который слушает на порту 443/tcp. VPN работает относительно нормально, SSH вполне себе юзабельно.
В sysctl записано:
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
Вывод iperf:
Connecting to host lenin.corp.example.com, port 5201
[ 5] local 10.66.78.212 port 41586 connected to 192.168.35.251 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 3.38 MBytes 28.3 Mbits/sec 0 277 KBytes
[ 5] 1.00-2.00 sec 5.62 MBytes 47.2 Mbits/sec 0 516 KBytes
[ 5] 2.00-3.00 sec 7.88 MBytes 66.0 Mbits/sec 0 904 KBytes
[ 5] 3.00-4.00 sec 10.9 MBytes 91.2 Mbits/sec 0 1.41 MBytes
[ 5] 4.00-5.00 sec 9.88 MBytes 82.8 Mbits/sec 0 1.89 MBytes
[ 5] 5.00-6.00 sec 14.0 MBytes 117 Mbits/sec 0 2.60 MBytes
[ 5] 6.00-7.00 sec 8.25 MBytes 69.2 Mbits/sec 344 2.11 MBytes
[ 5] 7.00-8.00 sec 9.88 MBytes 82.8 Mbits/sec 450 1.53 MBytes
[ 5] 8.00-9.00 sec 10.9 MBytes 91.2 Mbits/sec 0 1.62 MBytes
[ 5] 9.00-10.00 sec 9.88 MBytes 82.8 Mbits/sec 0 1.69 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 90.5 MBytes 75.9 Mbits/sec 794 sender
[ 5] 0.00-10.18 sec 89.0 MBytes 73.4 Mbits/sec receiver
iperf Done.
Немного смущают 794 пересланных пакета, игры с mtu к улучшению не привели.
Проблема заключается в том что samba работает крайне медленно, для того чтобы сделать mount требуется несколько минут, также для ls -la.
Подскажите, пожалуйста, в какую сторону смотреть? Использовать UDP не вариант, ибо блокирует РКН.
UPD: На андроиде все нормально, проблема наблюдается только на Arch Linux.
Я тут узнал, что можно одновременно на нескольких tty запускать графические сессии.
И тут закралась мысль, а можно ли не только запустить, а использовать одновременно две графические сессии?
Одной я буду пользоваться, как обычно, а на другой запущу vnc-сервер и к нему подключусь с другого устройства.
Таким образом, я буду просто использовать систему, как всегда, а на другом tty через vnc-сервер кто-то другой будет работать.
Но это не совсем работает, как надо.
2 графические сессии запустил, одна запустилась автоматом при запуске системы, вторую на другом tty вручную запустил через startx.
vnc-сервер запустил, подключился к vnc-серверу с другого устройства.
Но как только я переключаюсь с того tty на котором запущен vnc-сервер на другой tty, vnc-клиент перестаёт получать изображение. Если вернуться обратно, то изображение появляется.
Может ли такое вообще работать? Не получается нагуглить, возможно ли такое вообще, и как это настроить.
У меня KDE 5 X11.
Пока летел в самолете, наваял для bashrc парочку функций. Выложил все в github. https://github.com/mrAibo/bash/tree/main
В общем-то ничего особенного, за исключением пары функций из-за которых и выкладываю. Может кто-то оценит. Документацию составил ИИ. Тестируйте, если есть идеи, что добавить/улучшить - пишите. Будет время рассмотрю.
The rcp
function is a versatile tool for copying files and directories, both locally and to/from remote systems. It supports both rsync and scp, offering various options for compression, moving files, and more.
rcp [OPTIONS] source destination
-z
, --compress
: Compress data during transfer-m
, --move
: Move files (delete source after successful transfer)-u
, --user USERNAME
: Specify remote username-p
, --port PORT
: Specify SSH port-i
, --identity FILE
: Use specific SSH identity file-l
, --limit RATE
: Set bandwidth limit (KB/s, rsync only)-e
, --exclude FILE
: Specify exclude file or pattern-s
, --use-scp
: Force SCP instead of rsync-v
, --verbose
: Enable verbose output-h
, --help
: Show help messageBasic copy:
rcp /path/to/source user@remote:/path/to/destination
Compressed transfer with verbose output:
rcp --compress --verbose /path/to/source user@remote:/path/to/destination
Move files using a specific SSH key and port:
rcp -m -p 2222 -i ~/.ssh/my_key /path/to/source user@remote:/path/to/destination
Use SCP with exclude patterns:
rcp --use-scp --exclude '*.log' /path/to/source user@remote:/path/to/destination
Limit bandwidth and use compression:
rcp -z -l 1000 -e '**/*.tmp' /path/to/source user@remote:/path/to/destination
This function provides a flexible and powerful way to handle file transfers in various scenarios, combining the strengths of rsync and scp with additional features for improved usability.
The ex
function is a versatile tool for extracting and compressing various types of archive files. It supports multiple formats and offers options for both extraction and compression operations.
ex [OPTIONS] file1 [file2 ...]
-x
, --extract
: Extract mode (default)-c
, --compress FORMAT
: Compress mode (specify format: tar.gz, tar.bz2, zip, 7z)-v
, --verbose
: Enable verbose output-t
, --target DIR
: Specify target directory for extraction or compression-d
, --delete
: Delete original file(s) after operation-e
, --exclude PATTERN
: Exclude files/directories matching the pattern or specified in a file-h
, --help
: Show help messageExtract an archive:
ex archive.tar.gz
Compress files to a zip archive with verbose output:
ex --compress zip --verbose --target /tmp file1 file2
Extract files to a specific directory and delete the original archive:
ex --extract --delete --target /path/to/extract archive.zip
Compress directories to a tar.gz archive, excluding certain files:
ex --compress tar.gz --exclude '*.log' --target /tmp dir1 dir2
Compress using patterns from an exclude file:
ex -c zip --exclude exclude.txt dir1 dir2
The ex
function simplifies the process of working with archives by providing a unified interface for both extraction and compression tasks. It supports a wide range of formats and offers flexibility through various options, making it a powerful tool for file archiving and extraction operations.
The duu
function is an enhanced version of the standard du
(disk usage) command. It provides a colorful, easy-to-read summary of disk usage for directories and files.
duu [directory]
If no directory is specified, it will analyze the current directory.
The function displays the following information:
Disk Usage Summary
Size Unit Usage Path
---------- ------ --------- --------------------
1.23 G █████░░░░ /home/user/Documents
856.45 M ████░░░░░ /home/user/Downloads
234.56 M ██░░░░░░░ /home/user/Pictures
45.67 M █░░░░░░░░ /home/user/.config
----------------------------------------
Total: 2.34 G
The duu
function enhances the standard disk usage analysis by providing a more user-friendly and informative output, making it easier to understand and manage disk space usage.
Есть очень древняя программа без исходников, скомпилированная под Linux ориентировочно в 2000-2003 годах. Вероятно компилировалась на RHL 7.3 Valhalla (не путать с RHEL 7, тогда ещё вообще RHEL’ов не было), возможно даже каким-то GCC 2.95:
prism.original: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped, too many notes (256)
Нужно запустить её на современной Ubuntu LTS.
При запуске ругается так:
prism: symbol lookup error: prism: undefined symbol: errno, version GLIBC_2.0
Погуглил, и нашёл что GNU’тые когда-то там на рубеже веков сломали API/ABI и этот errno
похоже что завернули в какие-то убермакросы и выкинули.
Извернулся, взял HEX-редактор и заменил несуществующий символ errno
на существующий srand
:
После такого наглого вмешательства программа запустилась и всё отлично работает, но напрягает такой выхлоп в консоль:
prism: Symbol `srand' has different size in shared object, consider re-linking
Как сделать по красоте и избавиться от этого предупреждения?
Сам файл программы: https://0x0.st/Xy0d.zip/prism.zip
Многие пользователи Linux с большим стажем даже не подозревают о существовании этих замечательных инструментов, которые способны облегчить им жизнь…
( читать дальше... )
Эта статья не содержит описания способов обхода блокировок для доступа к противоправому контенту. Socks-прокси нужны исключительно для того чтобы смотреть YouTube и просить ChatGPT писать за тебя домашние задания!!! У первого какие-то проблемы со скоростью последнее время, говорят, что из-за отключения кеширующих серверов, а второй сам заблокировал жителей из России, Беларуси и Китая…
( читать дальше... )
Кнопка Delete расположена в стороне от основных клавиш - приходится отрывать руки «фыва олдж», что бы её нажать. Хочется её перебиндить Delete на что-нибудь более доступное, например на Shift+Backspace или на Ctrl+H.
В man 7 xkeyboard-config
решения не нашёл. Клавиатура не программируемая (не QMK/VIA).
Есть идеи?
Установил Ubuntu 22.04.3 LTS на указанный ноут. Сразу при запуске все хорошо - яркость регулируется и с кнопок, и из менюшки. Через некоторое время (минут 10) яркость сама по себе доводится до максимума или до минимума, после чего перестает работать одна или обе кнопки настройки яркости, при этом регулировка из менюшки работает. Иногда это событие повторяется. Один раз было, что яркость сама повысилась до максимума и менялась через менюшку, но сразу же восстанавливалась до максимума, будто была зажата кнопка, но прошло само через пару секунд (впоследствии кнопки так и не заработали). Кто знает, подскажите пожалуйста, в чем может быть дело.
Здравствуйте. Решил поправить свой dsdt напопробовать включить S3 вместо новомодного s2idle. Однако при повторной компиляции, даже непоправленного dsdt.dsl выдает 41 error. Беглый гуглеж говорит, что это проблемы синтаксиса acpi более старой версии.
Как поправить ошибки или ассемблировать под более старую версию acpi?
Краткое содержание: допилил и форкнул утилиту прошивки edid в edid-checked-writer чтоб прошить сквозной HDMI-эмулятор монитора.
Предистория: имеется 1440p монитор Samsung S27A850D, в котором есть DP и DVI-dual-link. Но нет HDMI (видимо к моменту выхода монитора HDMI не умел в 1440p).
Хотелка: чтоб был способ его по-простому подключить к любому hdmi-источнику и работал бы в 1440p.
Изначально был взят просто пассивный провод-переходник HDMI->DVI-single-link, но с ним не достигалось нужное разрешение, так как монитор в своём EDID не выдавал совместимости с HDMI, в результате чего источник сигнала понимал что используется переходник и не выдаёт битрейта HDMI для 1440p. Однако по предварительным тестам с этим переходником + программным подсовыванием EDID от HDMI-1440p-монитора https://github.com/linuxhw/EDID/blob/master/Digital/Samsung/SAM0E0C/38CD24A55A35 стало ясно что сам монитор более высокий битрейт поддерживает. Оставалось только научить его выдавать этот EDID по кабелю.
Была взята утилита edid-rw, сделал бэкап существующего EDID, дал команду на запись нового - утилита молча вышла с кодом 0 ничего не написав. Оказалось что, во-первых, утилита не проверяет успешность записи, а во-вторых что EEPROM внутри монитора в режиме только чтения (а физически находится под большой впаянной пластиной, когда-то разбирал его ранее).
Поэтому вместо выпаивания и прошивки был выбран более простой и повторяемый путь. Куплен «адаптер HDMI для KVM» - отличается от обычного эмулятора монитора тем, что имеет и выход на который идёт сквозное прохождение сигнала. Маленький металлический с надписями Source и Sink. Добавлен на конец провода-переходника, и внутри этого адаптера оказался уже вполне прошиваемый EEPROM, который всегда представляется источнику сигнала вместо того что передаёт моник.
По этому поводу доработал прошивальщик EDID проверкой на успешность записи и внятным отображением этого резульатата, потестил в разных сценариях и выложил форк на который ссылка вначале. Автор оригинального скрипта edid-rw ещё 4 года назад написал что «не заинтересован в развитии, форкайте если хотите»
Теперь окирпичить монитор из-под линукса стало чуть-чуть удобнее! (или можно случайно окирпичить оперативку, если указать при прошивке не ту шину и прошить EEPROM памяти; я добавил одну проверку призванную это предотвратить, но она ненадёжная; в оригинале вообще не было)
Как с клиента узнать версию необходимого smb протокола для работы с Samba server ?
Не ожидал, что на AMD это такая проблема.
Ryzen 7x при echo mem > /sys/power/state
зависает.
На Arch вики и Gentoo ходил, пробовал выключать все опции /proc/acpi/wakeup
, менял в биосе варианты ACPI…
Не помогло. Под Windows спит. Под linux виснет или сразу включается.
Есть победившие недуг?
С Intel такого не наблюдалось.
пробовал ядра от 5.15 до 6.9
sudo dmesg |grep fai
[ 0.222269] thermal_sys: Registered thermal governor 'fair_share'
[ 0.239876] ACPI: _OSC evaluation for CPUs failed, trying _PDC
[ 2.587188] ACPI: \_TZ_.TZ10: _PSL evaluation failure
[ 2.863613] hub 8-0:1.0: config failed, hub doesn't have any ports! (err -19)
Добрый день. Подскажите, пожалуйста, такую вещь. У меня установлен Линукс Минт и по-умолчанию пакеты флатпак ставятся на раздел ~/.var/app (сами приложения) + основная масса летит в раздел /var/lib/flatpak/runtime и /var/lib/flatpak/app в корне и занимает там порядка 11Гб. Раздел я создавал небольшой под систему и отсюда вопрос: можно ли переместить или установку флатпаковского барахла целиком куда-нибудь в /home/user/ (отдельно смонтирован), или раздел /var на другой диск? Я достаточно нубас в системе, поэтому «для чайников», если можно)
Доброго вечера суток! Товарищи, у меня такой возможно не очень опытный вопрос. Ситуация такая: Недавно появилось большое желание и мотивация начать заниматься электроникой. В плане паять, создавать свои схемы и устройства для компьютера или как они называются точно не знаю, такие как Raspberry Pi 4, Proxmark 3, APImote, E-Mate X итд. Возможно вы меня посчитаете как какого нибудь парня пересмотревшего фильмов, но я очень очень давно хочу этим заняться, но не пойму с чего начать. Итак мои вопросы: С чего мне начать свой путь в этой сфере? Какие книги, курсы можете посоветовать? Какое оборудование надо? Какие языки программирования для этого всего нужны? И что вообще как? Буду до безумия благодарен за точный и серьезный ответ. Спасибо за внимание!
Перемещено Dimez из general
За 5 минут не нагуглилось. Нашёл onboard, но это не то. Я набиваю тексты, в которых есть особые значки. Некоторое подмножество юникода. Я хочу, чтобы мне было удобно их набивать. Что это означает?
Это означает, что я нажимаю некую глобальную (в рамках оконного менеджера) горячую кнопку. Ну, скажем, AltGr, и отпускаю её. После этого на экране появляется изображение клавиатуры. Далее я нажимаю и/или удерживаю другую кнопку, допустим, Shift, Ctrl, Caps, F1-F7 и т.п. У меня меняется на клавиатуре раскладка (при удержании одних кнопок и при нажатии других) и сразу отображается. Далее я нажимаю, допустим, на кнопку «а» на своей физической клавиатуре и соответствующий символ вводится туда, где находится текущий текстовый ввод. Далее я нажимаю Esc и клавиатура исчезает, ну или сразу исчезает после ввода одной буквы.
Есть такое? У меня LXDE.
Искал расширение / набор скриптов для VIM чтобы использовать его как IDE для python ( perl, c++, bash, понятно, что для каждого языка будет свой набор ). Их оказалось так много – всех не перепробуешь.
а. какое бы вы посоветовали? В первую очередь интересует питон.
б. как сравнивать, может где-то есть рейтинги, которые я не нашёл?
Всем большое человеческое аригато! Буду приручать неовим с nvchad на малинке.
Для переболевших ковидом:
apt install neovim
https://github.com/neovim/neovim/wiki/Installing-Neovim
git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1
загружаем конфиги nvchad
https://nvchad.com/docs/quickstart/install
следующие → |