Обычно VIM работает в режиме совместимости VI по умолчанию.
Попробуйте переключить режимы и посмотрите, работают ли команды. Используйте это, чтобы посмотреть, в каком режиме вы находитесь:
:set compatible?
Затем
:set compatible
или
:set nocompatible
переключиться в другой режим и дать
Добавление
set nocompatible
или
set compatible
в файл с именем .vimrc в вашем домашнем каталоге сделает настройку по умолчанию для vim.
После небольшого исследования я нашел решение, хотя я все еще открыт для других (возможно, более лучших) ответов.
Вот сценарий запуска (который можно добавить в приложения для запуска), который установит измененную переменную usbkbd_layout в usbkbd_layout на идентификаторы устройств usbkbd, найденные в xinput -list:
#!/bin/bash
usbkbd=`xinput -list | grep -c "USB Keyboard"`
if [[ "$usbkbd" -gt 0 ]]
then
usbkbd_ids=`xinput -list | grep "USB Keyboard" | awk -F'=' '{print $2}' | cut -c 1-2`
usbkbd_layout="tr(f)"
for ID in $usbkbd_ids
do
setxkbmap -device "${ID}" -layout "${usbkbd_layout}"
done
fi
exit 0
Этот сценарий весьма полезен (и более стабилен) для сценариев, когда пользователь начинает использовать ноутбук на рабочем столе (с внешней клавиатурой, мышью и монитором и т. д.), и его также можно запускать вручную всякий раз, когда внешняя клавиатура USB подключается ...
=========== ================================================== =============
сценарий запуска
Теперь я могу просто подключить свою USB-клавиатуру и автоматически использовать ее ( TR-F), при сохранении раскладки клавиатуры по умолчанию (TR-Q) на моем ноутбуке!
Вот файлы и их содержимое, которые делают это возможным:
/ etc / udev / rules.d / 00-usb-keyboard.rules
[f 2]/etc/udev/rules.d/00-usb-keyboard.rules
#!/bin/bash
/home/sadi/.bin/usb-keyboard-in &
/home/sadi/.bin/usb-keyboard- в
#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/sadi/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
usbkbd_id=`xinput -list | grep "USB Keyboard" | awk -F'=' '{print $2}' | cut -c 1-2 | head -1`
usbkbd_layout="tr(f)"
if [ "${usbkbd_id}" ]; then
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
sleep 2
setxkbmap -device "${usbkbd_id}" -layout "${usbkbd_layout}"
fi
/home/sadi/.bin/usb-keyboard-in
#!/bin/bash
/home/sadi/.bin/usb-keyboard-out &
/home/sadi/.bin/usb -keyboard-out
#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/sadi/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
gsettings set org.gnome.settings-daemon.plugins.keyboard active true
/home/sadi/.bin/usb-keyboard-out
Конечно, все четыре файла в вашем . "bin" должна иметь необходимые разрешения (читаемые и исполняемые), которые могут быть реализованы, например, с помощью команды Terminal, например chmod - 755 /home/sadi/.bin/usb-keyboard-*. Иногда после подключения USB-клавиатуры она по-прежнему использует ту же (по умолчанию) раскладку клавиатуры и переключается на заданный макет при второй попытке (возможно, где-то требуется немного больше времени сна). Специфическая компоновка клавиатуры USB не действует на экране входа в систему (когда вы выходите из системы). Если вы используете отдельный раздел для / home, то лучше было бы поместить четыре скрипта в корневой раздел, например. / usr / local / bin и соответственно изменить содержимое всех соответствующих файлов, так как иногда udev может искать эти файлы до того, как ваш / домашний раздел будет установлен и вызовет проблемы.ЗАКАЗАТЬ, ЧТОБЫ УСТАНОВИТЬ ЭТУ НАСТРОЙКУ К РАЗЛИЧНЫМ ТРЕБОВАНИЯМ:
Конечно, все четыре файла в вашей папке «bin» должны иметь необходимые разрешения (читаемые и исполняемые) который может быть реализован, например, с помощью команды Terminal, такой как chmod - 755 /home/sadi/.bin/usb-keyboard-* OWNER, и все имена пользовательских каталогов должны быть изменены с «sadi» на другое имя . Иногда после подключения USB-клавиатуры он все еще использует то же самое ( default) раскладка клавиатуры и переключается на указанный макет во второй попытке (возможно, где-то требуется немного больше времени сна). Значение для usbkbd_layout может быть любым другим допустимым выборомЯ только что улучшил это решение для клавиатуры bépo Typematrix (французская версия оптимизированного превосходного дворака) и в широком системном контексте (он предполагает, что у вас есть корневой доступ к машине). Для работы требуется всего 3 файла. Вы можете проконсультироваться с лог-файлом в случае неспособности выяснить, что происходит.
/etc/udev/96-usb-keyboard.rules
ATTRS{idVendor}=="1e54", ATTRS{idProduct}=="2030", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/etc/udev/bepo-typematrix-kbd.sh in"
ATTRS{idVendor}=="1e54", ATTRS{idProduct}=="2030", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/etc/udev/bepo-typematrix-kbd.sh out"
/ etc /udev/96-usb-keyboard.rules (абсолютно необходимо использовать промежуточный сценарий фонового рисунка)
#!/bin/bash
dir=$(dirname $0)
command=$(basename $0)
command=$dir/${command%\.sh}
arg=$1 # must be "in" or "out"
LOG=/var/log/bepo-typematrix-kbd.log
[ -x "$command" ] && $command $arg >$LOG 2>&1 &
/ etc / udev / bepo-typematrix-kbd
После того, как я много играл, это то, чем я сейчас бегу. Возможно, я напишу полную статью и опубликую код в репозитории, если бы это было интересно.
Настроить новый набор правил для udev:
sudo gedit /etc/udev/rules.d/80-external-keyboard.rules
Правило должно вызывать скрипт оболочки всякий раз, когда какое-либо действие запускается устройством с данной комбинацией поставщика и идентификатора продукта.
ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="4042", RUN+="/home/phil/.bin/switch-kb-layout-wrapper.sh"
После добавления новый набор правил, перезапустите службу udev:
sudo service udev restart
Примечание. Я не смог добиться надежных результатов, предоставив более конкретные правила соответствия в этом файле. Самое главное, добавление правила сопоставления ACTION не сработало. Насколько я могу судить, скрипт был запущен в любом случае. При добавлении ACTION=="add" сценарий все равно будет вызываться при удалении устройства. Очень странно и сбивает с толку.
Однако действие, вызвавшее правило udev, будет доступно вызываемому скрипту, как показано ниже.
Далее, сам скрипт , Ну, не совсем. Обратите внимание на суффикс wrapper в имени файла. Это указывает на то, что это не фактический скрипт, а оболочка, вызывающая скрипт и выполняющая его в фоновом режиме, чтобы udev мог завершить свой процесс.
Однако :
#!/bin/sh
/home/phil/.bin/switch-kb-layout.sh "${ACTION}" &
Переменная ACTION содержит действие udev, которое было инициировано устройством. Он дает такие значения, как add (устройство было подключено) и remove (устройство было удалено). Мы будем использовать их позже.
~/.bin/switch-kb-layout.sh:
#!/bin/sh
sleep 1
# Some environment variables that need to be set in order to run `setxkbmap`
DISPLAY=":0.0"
HOME=/home/phil
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
udev_action=$1
log_file="$HOME/switch-kb-layout.log"
if [ "${udev_action}" != "add" ] && [ "${udev_action}" != "remove" ]; then
echo "Other action. Aborting." >> $log_file
exit 1
fi
internal_kb_layout="de"
internal_kb_variant=""
external_kb_layout="us"
external_kb_variant="altgr-intl"
kb_layout=""
kb_variant=""
if [ "${udev_action}" = "add" ]; then
kb_layout=$external_kb_layout
kb_variant=$external_kb_variant
elif [ "${udev_action}" = "remove" ]; then
kb_layout=$internal_kb_layout
kb_variant=$internal_kb_variant
fi
setxkbmap -layout "${kb_layout}"
echo "set layout:" "$kb_layout" >> $log_file
if [ ! -z "${kb_variant}" ]; then
setxkbmap -variant "${kb_variant}"
echo "set variant:" "$kb_variant" >> $log_file
fi
Замените мое имя пользователя вашим при установке переменной HOME ($(whoami) не будет работать здесь , так как это не будет вызываться вашим пользователем, но root).
sed -i "s/phil/YOUR_USERNAME/g" ~/.bin/switch-kb-layout.sh
Для целей тестирования я добавил несколько строк, которые регистрируют определенные события в файле в моем домашнем каталоге, чтобы узнать, все ли работает. Вы можете удалить их.
Наконец, эти сценарии должны иметь разрешения на выполнение. Также важно отметить, что эти скрипты будут вызываться пользователем root, поэтому будьте осторожны, что вы там делаете.
chmod +x ~/.bin/switch-kb-layout-wrapper.sh ~/.bin/switch-kb-layout.sh