Как стать автором
Обновить

Комментарии 95

Спасибо тебе, добрый человек. Меня так долго огорчала эта проблема…
Огромное спасибо! Vim я начал использовать совсем недавно, и честно говоря не думал, что вообще есть решение этой проблемы с раскладкой. Частенько для правки русского текста приходилось использовать mcedit, с буквой ё ещё не сталкивался, но думаю, раз это тут упомянуто, то проблема действительно серьёзная.

По поводу :setlocal spell spelllang=ru_yo,en_us
Это тоже в .vimrc писать?

И ещё вопрос, у меня в ~ есть только .viminfo, .vimrc надо создать?
Welcome!

Не не. Если видете что-то, что с двоеточия начинается, имеется в виду команда, которая в буфере набирается. Всё это можно и в .vimrc можно написать (только без ведущего двоеточия), тогда оно будет выполнено один раз при старте vim. Тут нужно по ситуации смотреть что куда.

Конкретно здесь команда означает «установить локально, только для этого буффера (setlocal) переменную spell в 1 (spell без всего) и переменную spelllang в «ru_yo,en_us». spelllang определяет набор языков, по которым будет проверяться текст, а выставление spell просто включает проверку. Аналогично :setlocal nospell выключает проверку. Поскольку используется локальная установка, большого толку в .vimrc от неё не будет.

Я для себя в .vimrc написал
:set spelllang=ru_yo,en_us

А включаю/выключаю проверку просто через :set spell и :set nospell

~/.vimrc да, нужно создать или свистнуть где-нибудь. Погуглите «vimrc» — найдёте варианты от минимализма до Вавилонов.
В дополнение к вышесказанному: .viminfo хранит историю и постоянно заменяется самим Вимом, туда писать ничего не надо. Подробнее в :help viminfo.
Видел это решение, не помню, почему меня не устроило. Обхожусь mapами и вот такой самоделкой:
nmap Ж :!setxkbmap us:!setxkbmap us,ru:
А можете рассказать как это работает?
по кнопке Ж (двоеточие) утилитка setxkbmap (линуксовая) выставляет английскую раскладку (сначала удаляя русскую. а то не переключается, а потом снова ее добавляя). Топорно, но универсальное решение. Возможно, что-то подобное можно и под винду.
Угу, а настройки раскладки xkb сохраняются (всякие variant и options)? Или все будет «похерено»?
да вроде сохраняются — у меня проблем не было. Но можно прямо сюда дописать, если принципиально, она должна их понимать.
Вдохновившись Вашей идей написал себе в ~/.gvimrc вот что:

imap :!setxkbmap us:!setxkbmap us,ru
nmap :!setxkbmap us:!setxkbmap us,ru

Теперь просто при нажатии ESC включается английская раскладка :)
vim — охуенный редактор
Коротко — но ёмко!
grp:lwin_switch
в hal или xorg.conf

на время нажатия LWin переключает раскладку в любом приложении

но мжт так удобнее, надо попробовать
В современных линуксах раскладку проще настраивать средствами DE. Раньше было просто — написал то, что нужно в xorg.conf и все работает. Теперь определение и настройка клавиатуры делается средствами HAL. Что бы банально настроить её под себя — приходится искать настроечные скрипты и править их. Работает до первого обновления.
В современных линуксах HAL уже не используется www.archlinux.org/news/502/ :)
Да и DE далеко не у всех есть.
А можно что-нибудь вроде

setxkbmap -option grp:caps_toggle,grp_led:caps,compose:r_alt -layout us,ru -variant ",winkeys"

Записать в свой .xsession, .xinitrc, .Xclients и т.д. (зависит от дистрибутива) и не будет зависеть ни от HAL-udev, ни от DE.
попробовал. нефига не удобнее.
А нельзя вместо Ctrl+^ как-нибудь использовать привычные комбинации для переключения раскладок?
По-простому, видимо, нет. Дело в том, что привычные переключалки вроде Alt+Shift или Caps Lock состоят только из клавиш-модификаторов и поэтому перехватываются X'ами ещё на подлёте к Vim. Я краем глаза видел хак, который заключался в написании обёрточного скрипта для запуска GVim, который обязывает X игнорировать стандартное поведение и транслировать нажатие Caps Lock именно для Vim в конкретный код символа, который в свою очередь уже мапится в Vim. Короче, не было у меня сегодня столько времени :)
я на протяжении года использую клавишу «LWin» переключения «while pressed», а «RWin» для обычного переключения (если припрет). Это позволило не думать о проблеме горячих сочетаний в линуксовых приложениях при включенной русской раскладке.
Люблю vim :)
Друзья меня называют извращенцем…
друзья используют notepad?
/>
Да
полезно, но много нынешних Лину/Юни -ксоидов больше привыкли к Емаксу, хотя радует поддержка некоторых вкусностей Вима в нем
Подскажите пожалуйста, как сделать выбор в сторону таких редакторов — Emacs или Vim? Понятно, что это немного сложный выбор, и тут первым ответом напрашивается «кому что удобней».

Почему «нынешние» лину/юни-ксоиды больше привыкли к Emacs?
Емакс сильный графический редактор в отличие от более консольного Вима
Мммм… нужно будет изучить этот аспект, а то я всё Фотошоп да Гимп
НЛО прилетело и опубликовало эту надпись здесь
Я вообще не понимаю как я ранее это не понял.
Недавно перешел на vim.
Плюсы:
1) Работа происходит только от клавиатуры (лечим туннельный синдром, уменьшаем количество бесполезных мышкодвижений = экономим время)
2) Много скриптов для vim ( куча поддерживаемых языков программирования, подсветка, дебаг, автокомплит, справка, итд)
3) Унифицированная среда для любой системы — скопировал каталог со своими настройками и вуаля — работаешь в привычной среде везде — на удаленном сервере, на чужой машине, под любой OS.
4) Не ест ресурсы.

Минусы:
На мой взгляд их нет, нужно немного привыкнуть.

Теперь вся работа у меня происходит в связке — vim, mc, tig ( для git ), firefox + vimperator
О! Вот за tig спасибо! gitk иногда передраконивает постоянно использовать :)
да и по ssh он работает
Оба редактора достаточно сложны в освоении, что впоследствии сполна окупается. Мой выбор пал в сторону vim, поскольку часто приходилось редактировать конфиги через SSH, а на серверах был как раз vim. Однажды мне надоело бестолково тыкаться по редактору и я решил основательно изучить vim, о чём ни капли не жалею.

В емаксе, помнится, играл в какой-то забавный текстовый квест :)
Вам следует только набрать в консоли vimtutor
Чтобы выбрать — пройдите для начала тутор по обоим редакторам.

Vim — это очень мощный, но всё же текстовый редактор, Emacs уже ближе к IDE. Соответственно Emacs потяжелее, дольше стартует и всё из этого вытекающее. Но из него вроде и не выходят, в нём живут :) А Vim это редактор, очень хороший редактор.
vim — это редактор, да. А emacs — это программная лисп-система, с языком ориентированным на работу с текстом.

Народ на elisp'е скрипты вместо перла пишет.
По-моему больше привыкших к gEdit, jEdit, Eclipse, Code Blocks, KDevelop, которые при упоминании vim или emacs говорят: «Ой фуууу… Им же по 30 лет, там даже текст по ctrl+c не копируется, о чём тут говорить»
Очень тяжкий труд, пересесть на вим. Мозг надо поменять, согласиться с абсолютно тупыми правилами, тупить, полчаса думать, как блок кода «затабить» (я не говорю о первой попытки выйти из него ))))) )

Собственно, все хорошее легко не дается. Я получил с вима:
1) подсветку всего и вся
2) возможность настроить ВСЕ как я хочу
3) никакой абонентской платы
4) стремный и при ближайшем рассмотрении замечательный скриптовый-язык если мне мало настроек
5) и в виде главного бонуса — редактирования на любом своем хостинге, из любого места, любого кода\текста
\верстки из терминала.
6) Фактически 3 кратную скорость написания кода (лет десять этим занимаюсь, как говорить усе попробовал)

Особо не жалею (о чем?), изучаю дальше)))
никакой абонентской платы?
а какже дети Уганды?
НЛО прилетело и опубликовало эту надпись здесь
я кстати не знаю благодаря какому куску из накопированных конфигов это, но в виндах в gvim у меня работает CTRL+C в режиме вставки. В линуксе раньше работало, после переустановки нет (линукс на сервере, не так существенно, там консоль больше).
source $VIMRUNTIME/mswin.vim
behave mswin
В комплекте с ним идёт скрипт, который помогает виму вести себя в соответствии с виндовыми привычками.
Emacs содержит свой IME, что делает настройку хоткеев очень простой и лёгкой, и он даже не конфликтует с viper-mode и vimpulse :3

Если когда-нибудь допилят vimpulse, можно будет о vim'е совсем забыть, а пока в emacs'е редактора нет, предпочитаю vim.
Кому-то не нравится емаксовый IME? Или были проблемы с vimpulse? Скажите за что минус — вместе решим Вашу проблему.
Спасибо огромное! Ей богу пытаюсь использовать Vim для работы, так как Eclipse и прочие pdt-based java IDE очень тормозные. Но начинает задалбывать уже это постоянное копание в vimrc. Пытают сделать из него полноценную web development IDE, с автокомплитом, браузером классов и функций и прочими фичами… но пока медленно продвигается(
Pida? А на открытие и перечитывание vimrc можно шорткат в пару кнопок настроить :)
Опа, не видел, интересный проект… спасибо, посмотрю)
это разве работает в с кодировкой локали utf8?
Работает :)
Только сегодня с утра решил эту проблему. :) Достаточно в vimrc добавить (писать в одну строчку):

set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯЖ;ABCDEFGHIJKLMNOPQRSTUVWXYZ:,
фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz


После этого можно переключать раскладку штатными средствами (X11 или DE, что уж кто использует).

Читать :help Russian<CR>.
Ценное дополнение, спасибо.
Попробовал… понял, что проблема с пунктуацией остаётся, i_Ctrl+W не работает. Беру на заметку, но остаюсь при своём :)
Да, я толком ещё не распробовал, в основном код по-английски пишу. Ну и повторюсь, только сегодня озаботился. Так что, может, в итоге воспользуюсь Вашим способом и буду премного благодарен. А пока просто плюсики. ;)
С локалью в utf-8 пробовали?
Именно с ней и пробовали.
Круто, раньше не работало с UTF-8, значит починили наконец-то.
Буквально позавчера сменил langmap на keymap. Самой веской причиной явилась необходимость использовать виндовский vim на работе и nix-овый дома. Возникали проблемы с переносом конфига туда и обратно, вследствии разных дефолтных кодировок и кодировок самого .vimrc (сбивались сочетания клавишь при смене онных). Жизнь с keymap стала намного проще. Сейчас вот смену языка на caps забиндю… или на win-key как тут советуют и совсем будет шоколадно!
Спасибо!
Во времена koi8-r у меня .vimrc был полон «map ш i», но с переходом на UTF это перестало работать. Правда, и набирать по русски мне стало приходиться реже и я поленился искать решение этой проблемы.
Шаманство какое-то, несколько раз пытался начинать настраивать vim, но терпения не хватало, так и пользуюсь минимальными стандартными комбинациями клавиш.
Это не шаманство, это наркотик 8)
Вот эта пара строк сильно экономит время на копание в .vimrc
" ## Edit .vimrc ##
map ,v :vsp $MYVIMRC<CR>
map ,V :source $MYVIMRC<CR>

Первая маппит на ,v открытие .vimrc в вертикальном окошке, а вторая просит VIM пересчитать файл.

А остальные ваши проблемы вполне себе разрешимы с помощью таких плагинов, как taglist, fuzzy_finder, snipmate и т.д.
Ещё проще, само пересчитывает vimrc при изменении оного:

autocmd! bufwritepost ~/.vimrc execute "normal! :source ~/.vimrc"

Не при изменении, а после записи.
Ну собственно, он изменяется после записи. :)

А вообще да, Вы корректнее выразились, спасибо за поправку.
Не у всех конфиг в home:
autocmd! bufwritepost $VIM/.vimrc source $VIM/.vimrc
Действительно полезно, спасибо.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
как решили проблему? У меня такая же ошибка.
Нажимайте в режиме вставки, не в command mode
НЛО прилетело и опубликовало эту надпись здесь
Столкнулся с проблемой, по непонятной причине изменение цвета курсора (highlight lCursor guifg=NONE guibg=Cyan) не работает при запуске. Заводится, только если вбить вручную, причем без guifg=NONE. В чем может быть дело?
Может быть, colorscheme подгружается после, а там эта подсветка сбрасывается?
Отключение темы помогает, но дело в том, что она грузится раньше чем цвет курсора
Попробуйте поискать в теме lCursor. Если есть, удалить, если нет, добавить. :)
спасибо, помогло
:verbose :hi lCursor покажет где именно последний раз устанавливалось значение.
и вам тоже
НЛО прилетело и опубликовало эту надпись здесь
у меня во всех ОС переключение по капс локу. Мизинец сам нажимает, я даже и не замечаю)
Да, капс лок удобная штука. Я даже PuntoSwitcher на виндовые машины поставил, чтобы можно было по капсу переключаться.
Чтобы под виндой переключаться по CapsLock есть суперминималистичная утилита lswitch: haali.su/winutils/
Ого. Не знал, спасибо :)
И вновь продолжается бой…
:)
Тоже использую такой вариант переключения раскладки. Только мне удобнее когда меняется цвет статусной строки и переключение по Ctrl + F.

В ~/.vimrc у меня это оформлено так:
set keymap=russian-jcukenwin    " настраиваем переключение раскладок клавиатуры по C-^
set iminsert=0                  " раскладка по умолчанию для ввода - английская
set imsearch=0                  " раскладка по умолчанию для поиска - английская

" переключение на русскую/английскую раскладку по ^f (Ctrl + F)
cmap <silent> <C-F> <C-^>
imap <silent> <C-F> <C-^>X<Esc>:call MyKeyMapHighlight()<CR>a<C-H>
nmap <silent> <C-F> a<C-^><Esc>:call MyKeyMapHighlight()<CR>
vmap <silent> <C-F> <Esc>a<C-^><Esc>:call MyKeyMapHighlight()<CR>gv

" Переключение раскладок и индикация выбранной в данный момент раскладки -->
" При английской раскладке статусная строка текущего окна будет синего цвета, а при русской - красного
function MyKeyMapHighlight()
	if &iminsert == 0
		hi StatusLine ctermfg=DarkBlue guifg=DarkBlue
    else
        hi StatusLine ctermfg=DarkRed guifg=DarkRed
    endif
endfunction
" Вызываем функцию, чтобы она установила цвета при запуске Vim'a
call MyKeyMapHighlight()
" При изменении активного окна будет выполняться обновление индикации текущей раскладки
au WinEnter * :call MyKeyMapHighlight()
" <--

Первая проблема решена уже сотни раз, но, всё равно. Также спасибо за защиту буквы «ё».
навеяло. когда-то мы, еще виндузятники, стали изучать linux. как-то раз ннам дали задание: зайти в vim написать что угодно, сохранить в файл и выйти из него.
никто не справился.
PS: про команду man еще никто не знал тогда
А кому-нибудь интересна возможность полной выключки на русском языке с переносами и без них? Я как-то писал статью, но она умерла в песочнице. Могу повторить в бог о великом vim, ну или на почту выслать, если интересно только единицам…
Думаю, некоторым будет интересно.
С vim так — нашел какой-то tip, как улучшить работу — делаешь, радуешься. По ссылкам из этого tip или по комментариям находишь другие рецепты улучшений. И снова улучшаешь работу. Рекурсия улучшений.

Автор, спасибо.
Или я тупой или что-то не то делаю)
Вимом пользуюсь день четвертый отсилы если не считать тех нескольких скромных попыток, в которые он или пищал или всё портил, после чего забрасывался.

Вобщем вин7 ультимейтх64.
Вим поставил, в стандартной поставке этого самого кеймап-йцукенвина не было. Скачал отсюда.
"Поправим командную строку при русской раскладке
set keymap=russian-jcukenwin " вкрутить файл, пока хз куда всунуть его
set iminsert=0 " какая-то хрень для мапинга/унмапинга
set imsearch=0 " same

" меняет цвет курсора если эта самая хрень включена
highlight lCursor guifg=NONE guibg=Cyan

Вот вырезка из .vimrc
ЧЯДНТ?
Вообще мне больше нравится вариант автоматического переключения на англ при нажатии ескейпа, но я не знаю как в винде это сделать командной строкой, нагуглить не удалось, может кто подскажет.
Я, разумеется, понимаю, что пост не то, что стар, а просто супер-стар (с), но вот буквально на днях впервые (уж сколько лет пользуюсь вимом!) потребовалось возможность писать по-русски в виме — редактировать tex-файлы (обычно при программировании русский не нужен, комментарии все на англ всё равно), и я столкнулся с той же проблемой, что описана в самом начале: куча переключений раскладки, работа получается неэффективной и неудобной.

Подумалось: «ну нет! это же вим, тут всё можно сделать», и теперь в этом в очередной раз убедился. Скорый поиск нашёл этот пост. Собственно, сейчас зашёл сюда только ради того, чтобы сказать вам спасибо.

Подсветку делать не стал, строчки «Insert (lang)» внизу экрана вполне хватает; буква «ё» в tex'е правильно обозначается как
\"е,
поэтому тоже не исправлял.

Зато я чуть-чуть модицифировал russian-jcuken.vim под более привычную мне Mac OS раскладку, положил russian-jcukenmac.vim в ~/.vim/keymap. Круто, что работает нативно, никаких отягощающих плагинов, всё супер. Доволен, как говорится, как слон :)

Огромное спасибо!
А я вот на Vim часто русский текст пишу — например, вот, прямо сейчас набираю вам этот текст с Vim'a ☺ Использую «C-i» в расширении Pentadactyl (плагин для управления браузером с клавиатуры), чтобы вызвать редактор для набора текста с любой текстовой формы.
Однако! Это меняет дело. Действительно, было бы весьма удобно весь текст вводить в виме, потому что очень не хватает многих вещей, особенно навигации с клавиатуры. Надо будет рассмотреть поподробнее, спасибо. Я пока обхожусь VimFx для Firefox (он гораздо менее функционален, чем Vimperator или Pentadactyl), но хочу в ближайшее время попробовать какой-нибудь vim-like браузер из этого списка. Уж больно FF стал обширным и неповоротливым.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории