Vim: русская раскладка. Три способа
Как я понимаю, есть три способа работать с русской раскладкой.
Первый способ: использовать langmap. Этот способ, вроде бы, устарел, никаких профитов не приносит.
Там 100500 реализаций, у каждого пользователя своя, но вот официальная:
Второй способ: использовать keymap. Вроде самый нормальный на сегодня (переключается через Ctrl-^).
Третий способ: использовать плагин https://github.com/lyokha/vim-xkbswitch. Есть ли там профиты? Не знаю. Про него было несколько тредов, вот один из: Vim. Назначение горячих клавиш кириллицей.
Слишком сложно. Можно сделать так чтобы при входе в командный режим английская раскладка в ловеркейсе включалась (т.е. капслок тоже отключался)? Глобально в иксах, в терминале? По выходу чтобы возвращалось как было (независимо от того менял ли ты язык или нет). Очень уж напрягает.
Заодно как удалить капслок? У меня на капслоке переключение раскладок, шифт+капслок включает капслок, но от него больше вреда чем пользы.
Способ 4 — не работать в normal mode с русской раскладкой. Повесь ее на «зажатый правый Alt» или «зажатая педаль» и проблемы как рукой снимет.
В смысле? Ну вот ты набирал комментарий в коде на русском языке. У тебя раскладка русская. Нажимаешь Escape чтобы перейти в Normal mode. И она по-прежнему русская.
На CapsLock у меня Ctrl, раскладки не переключаются, а включаются: En — левый win, Ru — правый (menu). Esc и Tab поменяны местами.
набирал комментарий в коде на русском языке. донабрал. перед или после нажатия Escape отпустил Alt, ибо уже не набираешь комментарий в коде на русском языке.
основной плюс: русскость твоей раскладки в таком способе «переключения» становится stateless и равной зажатости Altа. это довольно быстро прошивается в подкорку и проблемы подобной сабжевой исчезают на корню
основной минус: риск развития болезни де Кервена или аналогичного RSI, если хреново выбрал кнопку для зажатия
способ с langmap самый быстрый и простой, используй его и не парься.
для переключения в vim 8 добавили event для cmd
au CmdLineEnter * :call job_start(‘xkb-switch -s us’)
и CmdLineLeave соответсвенно.
Ну я понял, нет, мне это точно не подходит.
Ну хз. Как по мне — каша из букв, которая на некоторых юзкейсах еще и не работает.
Способ 4 — не работать в normal mode с русской раскладкой
Я считаю, ты ошибаешься, это способ №1.
не работать в normal mode с русской раскладкой
translating these special characters to the original meaning of the key (:help langmap)
ошибочно считаешь, че.
Не может быть. langmap я пробовал, не пошло, убрал. Гораздо проще оказалось «не работать в normal mode с русской раскладкой», так что этот способ №1, а не 4.
Третий способ (xkbswitch) — наилучший вариант для кириллицы, первые два имеют свои камни и бока, нет времени объяснять.
vim-xkbswitch если кто на Ubuntu 18.04 использует, напишите, как ставили. А то у меня не работает, пользуюсь keymap
Первый и второй способ пробовал по удобству сравнивать?
Если нужен только линукс, то наверное лучший способ. Я использую для переключения kbdd и для этого у меня свой велосипед, меняющий раскладку по d-bus.
Второй способ хорош тем, что работает на любой платформе.
Я придумал такой, достаточно универсальный способ решения проблем переключения, который годится на случай, если кириллица в тексте преобладает. Он состоит в том, что можно вводить латиницу в кириллической раскладке, удерживая нажатым пробел. Чтобы ввести пробел, нужно, соответственно, нажать пробел и отпустить его.
Правда, реализовать его удалось только для частного случае моего debian-а и моего lxde. И только для иксов, локально (не пробовал всякие удалённые подключения).
ваши замечания приветствуются. Надо сразу сказать, что раскладка не была заточена на вим, который я знаю на уровне i что-то напечатать / что-то поискать Esc :wq! .
Конкретно для ввода этих команд пришлось помучаться, потому что двоеточие находится на цифре 6 (как в русской раскладке), и её нельзя ввести в английской с пробелом. Прямой слеш также вводится с шифтом. Т.е. всё равно неудобно. Может быть, можно сделать какой-то аналог, более заточенный под Вим.
Настройка поддержки русского языка в GVim (windows)
Хочу поделиться с сообществом опытом допиливания поддержки русского языка в GVim под Windows 7. GVim — очень мощный текстовый редактор, но в текущей Windows-реализации без тонких настроек он выглядит гадким утёнком по сравнению c GVim под Linux или MacVim.
Что будет в данной статье? Исправление локализации для Unicode в Windows-версии GVim, настройка переключения раскладки между клавиатуры, включение проверки орфографии. Предполагается, что вы владеете азами работы в Vim. На хабре уже есть статья, затрагивающая тему поддержки русского языка, и хотя она всё ещё остаётся полезной, но на данный момент немного устарела.
В принципе русский язык в интерфейсе Windows версии GVim работает «из коробки», но есть небольшой нюанс: при выставленном Unicode редактор не отображает кириллицу в сообщениях и меню, поэтому либо приходится переключать GVim на английскую локализацию, либо мириться с этими «кракозябрами» в меню и «ять»-ями в приветствии программы. И это в наше время, когда подавляющие большинство программ и даже стандартный блокнот в Windows по умолчанию работает с Unicode текстом! Ситуация усугубляется ещё тем, что в сети просто нет руководств, как исправить эту проблему. Словно прекрасная девушка, танцующая красивый танец и громко пускающая газы при каждом новом па.
Исправим же это недоразумение!
Исправление отображения русского языка в интерфейсе GVim
Сначала починим отображение внутренних сообщений на русском языке (текст на экране приветствия, информационные сообщения, сообщения об ошибках).
(Великий и ужасный GVim «из коробки» при переходе на UTF-8)
Создаём файл vim.mo из utf-версии русской локализации po-файла (формат файла GNU gettext для поддержки мультиязычности). В windows для создания mo-файла я использовал свободную программу Poedit. Помещаем созданный mo-файл в папку $VIMRUNTIME/lang/ru_RU.UTF-8/LC_MESSAGES. Если у вас нет папок ru_RU.UTF-8 и LC_MESSAGES (по-умолчанию в windows-версии GVim’а их нет), создаём их. Если вам лениво создавать и править файлы, можете скачать мои: mo-файл (utf-8 версия), файл локализации меню. Вот теперь у нас есть все необходимые файлы для поддержки UTF-8.
Теперь надо разобраться с меню. Возникает резонный вопрос: почему меню не исправляется корректным mo-файлом? Всё очень просто — меню в GVim реализуется с помощью плагинов, поэтому для исправления кодировки надо исправлять рантайм-файл. Заходим в папку $VIMRUNTIME/lang, создаём дубликат файла menu_ru_ru.vim переименовываем его в menu_ru_ru.utf-8.vim и комментируем или удаляем 20-ую строку:
Внимательный читатель при поиске файла, скорее всего, заметит, что там есть некий похожий файл, а именно menu_ru.utf-8.vim (без одной «ru»). Мы его не трогаем, потому что его использует GVim по умолчанию (в Windows 7) и если его исправить то при необходимости возврата на cp1251 мы получим «кракозябры».
Дело осталось за малым: надо установить в системе переменную окружения LANG. В создании новой переменной нет ничего сложного, но на всякий случай привожу инструкцию. Заходим в настройки системы Win+Break -> дополнительные параметры системы -> Дополнительно -> Переменные среды -> Создать… Вводим имя переменной LANG, значение ru_RU.UTF-8.
Если по каким-то причинам вы не можете создавать переменные окружения, тогда можно добавить несколько строк в _vimrc:
Если вы ещё не включили Unicode, самое время сделать это. Открываем _vimrc и добавляем строку set encoding=utf-8. Теперь при запуске GVIM с установленным UTF-8 все сообщения будут отображаться на нормальном русском языке.
(Великий и ужасный GVim после внесения исправлений)
Настройка переключения раскладки в GVim
Зачем что-то делать с переключением раскладки и отказываться от любимого Ctrl+Shift / Alt+Shift? Ответ прост — это не удобно.
После внесения изменений при нажатии Ctrl+^ у нас будет переключаться раскладка, при этом в режиме ввода русского языка курсор будет гореть синим цветом. (За разъяснениям, что делает каждая из команд обращайтесь к статье, которая упоминалась в самом начале)
(Тюнингованный GVim в режиме ввода русского языка)
Также совсем недавно появился замечательный плагин, позволяющий упростить работу с несколькими языками.
Настройка проверки орфографии в GVim
Проверка орфографии включается с помощью команды:
При первом запуске из интернета загружаются все необходимые словари, после загрузки сразу включается проверка орфографии.
Ранее для корректной проверки слов, содержащих «ё», необходимо было дополнительно устанавлить словарь ru_yo, сейчас достаточно одного ru_ru. Но после подключения ru_yo, слова в которых «ё» было заменено на «е» будут подчёркиваться синим цветом.
Отключается проверка орфографии с помощью команды:
Вуаля! Теперь можно наслаждаться полноценной поддержкой русского языка в GVim.
Надеюсь, что статья вышла простой для понимания и окажется кому-нибудь полезной.
P. S. Запостил баг о необходимости перевода windows-версии GVim с дефолтной cp1251 на utf-8, пока никаких комментариев не было; думаю, что в готовящимся Vim 7.4 UTF-8 займет своё законное место.
P. P. S. Если кому-то понравилась моя иллюстрация, можете забирать (лицензия cc-by-sa 3.0).
Как установить язык пользовательского интерфейса в vim?
Я видел этой на reddit, и это напомнило мне об одном из моих Vim gripes: он показывает пользовательский интерфейс в немецкий. Будь ты проклята, ВИМ! Я хочу!—5—>английский язык, но поскольку моя ОС настроена на немецком языке (стандарт в нашем офисе), я думаю, vim на самом деле пытается быть полезным.
какие магические заклинания я должен выполнить, чтобы заставить vim переключить язык пользовательского интерфейса? Я пробовал гуглить в разных случаях, но, похоже, не могу найти ответ (Нет, Google, вы мой друг * pat*, * pat*, но я уже знаю, как изменить подсветку синтаксиса, спасибо!).
EDIT: используя все хорошие советы ниже, я закончил тем, что добавил Это в верхнюю часть моего .vimrc (запуск Vim 7.2 В Windows 7)
15 ответов
обратите внимание, что положить это в ваш .vimrc или .gvimrc не поможет вам с меню в gvim, так как их определение загружается один раз при запуске, очень рано, и не перечитывается позже. Так что вам действительно нужно установить LC_ALL (или, более конкретно LC_MESSAGES ) в вашей среде-или на не-Unixoid системах (например. Windows), вы можете передать —cmd switch (который выполняет данную команду во-первых, в отличие от ):
как я уже говорил, вам не нужно использовать LC_ALL , который принудительно переключит все аспекты вашей вычислительной среды. Вы можете сделать больше нюансов. F. ex., мои собственные настройки локали выглядят следующим образом:
это означает, что я получаю в основном английскую систему, но с немецкой семантикой для букв, за исключением того, что порядок сортировки по умолчанию является ASCIIbetical(т. е. сортировка по codepoint, а не в соответствии с языковыми соглашениями). Вы можете использовать другой вариант; см. man 7 locale дополнительные.
Для справки, в Windows (7) я просто удалил каталог C:\Program Files (x86)\Vim\vim72\lang . Что сделали его переключение на язык.
попробуйте это в _vimrc. Он работает с моим с Win7.
размещение этой строки кода в верхней части моего файла _vimrc спасло мой день:
это сработало для изменения языка меню vim
дал мне ошибку, сказав, что он не может установить en как язык, но эта строка сделала работу
последние исходят от документы Vim. Я добавил обе строки в начале файла _vimrc. Я использую компьютер Windows 7 64.
PS: эта строка изменяет язык и язык меню
в рамках .файл vimrc (или файл _vimrc если вы находитесь в Windows)
Ubuntu 10.10 + VIM 7.2 улучшено. Код ниже изменяет язык для консоли vim. Добавьте его поверх vim.rc
эти две строки в самом начале вашего .файл vimrc выполнит эту работу:
запустите vim с измененным языком:
или экспортируйте эту переменную по умолчанию в свой bashrc / профиль.
:язык называться fr_fr.ISO_8859-1
добавление этого в _vimrc работает для меня в windows 8:
(обратите внимание, что _vimrc находится в том же каталоге, который содержит мой vim74 dir, это файл _vimrc, который vim читает при запуске)
Я не знаю, почему все вышеперечисленные ответы не работает для меня. Я продолжал получать ошибки о том, что локалей не существует. Может, дело в окнах. Во всяком случае, моим решением было добавить это в мой vimrc: пусть $LANG = ‘en’
Ах, я заговорил слишком рано. Меню gVim по-прежнему на японском языке, но экран ввода на английском языке.
Windows-Два Vim
ничто отсюда не помогло мне, пока я не понял, что у меня есть 2 Vim.
- Git Bash через MinGW (Cygwin, mintty)
- отдельная установка в файлы программы на Windows
далее команда будет фильтр вы все смотрели vimrc-файлы и их расположение.
- _vimrc (Windows & CMD)
- .vimrc (Bash для Git)
- vimrc (имеет разные местоположения для обоих)
1: Vim на Windows & CMD
только переименование (удаление)Ланг папка помогла мне.
вы можете найти его здесь C:\Program Files (x86)\Vim\vim80\lang
я пробовал все настройки конфигурации, перечисленные здесь. Это было бесполезно.
2.1: Git Bash через MinGW, Cygwin, mintty
для Git Bash я добавил language messages en_US вверху C:\Program Files\Git\etc\vimrc
конечно, если вы предпочитаете, чтобы удалить Ланг папку вы можете найти здесь
- C:\Program Files\Git\usr\share\vim\vim80\lang
- C:\Users\User_name_xxx\AppData\Local\Programs\Git\usr\share\vim\vim80\lang для установки локального пользователя.
2.2: настройка только Git’s Bash (MinGW64, Cygwin, mintty)
в конце, для Bash на Windows, я решил пропустить манипуляции с vimrc
открыл C:\Program Files\Git\etc\bash.bashrc и добавил следующую строку
но не использовать en_US.UTF-8 потому что это делает странные символы для некоторых команд bash. Например, в ‘find’ xxx_yyy_zzz_aaa.bbbddd ‘ для несуществующего файла.
была аналогичная проблема, но ни одно из вышеперечисленных решений не работало: https://superuser.com/questions/552504/vim-ui-language-issue/552523
Я решил это, удалив все пакеты vim и построив vim источники.
надеюсь, это поможет кто-то.
Если вы находитесь в Windows и не хотите, чтобы вас беспокоили команды
чтобы предотвратить загрузку файлов локализации GUI
просто перейдите в Program Files\Vim\vim80\lang и поместите подчеркивание в качестве префикса перед всеми файлами, которые выглядят так, как будто они имеют какое-то отношение к вашей локали.
чтобы предотвратить загрузку файлов локализации самой VIM
в той же папке, что и выше, префикс с подчеркиванием папки с именем вашей страны код.
Примечание: Windows 10, вероятно, запросит права администратора, подняв предупреждение UAC.
кстати
этот же метод может быть применен ко многим инструментам Unix / Linux, портированным на Windows, и вообще ко всем пакетам программного обеспечения, где файлы локализации могут быть легко доступны. Если вы переименуете их, чтобы предотвратить их поиск приложением, резервным языком, скорее всего, будет английский.