latex-suite: раскладка клавиатуры (Проблемы с вводом буквы "ю" и заменой "..." после keym)

и другие vi-подобные редакторы

Модератор: /dev/random

Ответить
artbkv
Сообщения: 3

latex-suite: раскладка клавиатуры

Сообщение artbkv »

При редактировании .tex файлов в vim (gvim) после подключения vim-latex-suite возникает проблема с русской раскладкой клавиатуры.
В .vimrc прописано

Код: Выделить всё

set keymap=russian-jcukenwin

При этом после нажатия клавиши ю в тексте появляется символ . (точка).
Если в работающем vim-е ввести

Код: Выделить всё

set keymap=russian-jcukenwin

или запускать vim так

Код: Выделить всё

vim -c "set keymap=russian-jcukenwin"

то проблема с ю пропадает.
Пробовал поместить опцию включения русской раскладки клавиатуры в самый конец файла .vimrc --- не помогает.

Кроме этого некорректно работает замена ... на \ldots (\cdots).
Точнее она нормально работает в английской раскладке, а в русской она работает при нажатии на ю (в случае когда это нажатие приводит к вводу точки).

Таким образом мы получаем либо удобную функцию замены ... на \ldots (\cdots), либо нормальный ввод буквы ю, а хотелось-бы и того и другого одновременно.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: latex-suite: раскладка клавиатуры

Сообщение sash-kan »

artbkv писал(а):
14.05.2010 19:26
set keymap
понимаю, что мой встречный вопрос несколько не в тему. но всё же — а есть смысл заставлять vim управлять вводом кириллицы?

p.s. да, я могу, конечно, вообразить какой-нибудь подходящий случай. но совсем безысходного выдумать, увы, не получается.
т.е., я так понимаю, вы специально так настроили, а не от безысходности?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: latex-suite: раскладка клавиатуры

Сообщение sash-kan »

а в принципе по теме: вероятно, можно воспользоваться autocmd (:h autocmd.txt) и выполнять «set keymap…» при подходящем событии: BufRead, BufEnter или что-то в этом роде. при каком именно — увы, не подскажу. в том же разделе справки они все описаны. читайте, пробуйте.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu

Re: latex-suite: раскладка клавиатуры

Сообщение Luinnar »

У меня вот так русская раскладка настроена, и при этом ваших проблем с буквой Ю нет.

Код: Выделить всё

" Add russian language (switch keys: <C-^>)
set keymap=russian-jcukenwin
" Reset default language back to English (for insert/search)
set iminsert=0
set imsearch=0


sash-kan,
Смысл в том, что можно ракладку переключать отдельно для каждого из режимов vim'а. Например, переключить на русский для вставки текста, но оставить англ для всего остального, так чтобы стандартные команды работали.
Спасибо сказали:
artbkv
Сообщения: 3

Re: latex-suite: раскладка клавиатуры

Сообщение artbkv »

sash-kan писал(а):
14.05.2010 20:35
а есть смысл заставлять vim управлять вводом кириллицы?

p.s. да, я могу, конечно, вообразить какой-нибудь подходящий случай. но совсем безысходного выдумать, увы, не получается.
т.е., я так понимаю, вы специально так настроили, а не от безысходности?

Безысходного, наверное, не найдётся.
Однако, при редактировании русских текстов удобнее обучить vim кириллице, чем постоянно переключать раскладку.
Для работы с кириллицей видел два метода: через map и keymap.
Второй мне показался удобнее.
Если Вам известны другие методы с сохранением системного переключателя раскладки, поделитесь пожалуйста.

sash-kan писал(а):
14.05.2010 20:52
вероятно, можно воспользоваться autocmd (:h autocmd.txt) и выполнять «set keymap…» при подходящем событии: BufRead, BufEnter или что-то в этом роде.

Спасибо.
Проблема с вводом ю решается следующей строчкой в конфиге:

Код: Выделить всё

au BufEnter *.tex set keymap=russian-jcukenwin


Однако, остаётся вопрос с заменой ....
В файле latex-suite/main.vim нашёл определение функции SmartDots(), которая отвечает за эту замену:

Код: Выделить всё

" SmartDots: inserts \cdots instead of ... in math mode otherwise \ldots {{{
" if amsmath package is detected then just use \dots and let amsmath take care
" of it.
if g:Tex_SmartKeyDot

    function! <SID>SmartDots()
        if strpart(getline('.'), col('.')-3, 2) == '..' &&
            \ g:Tex_package_detected =~ '\<amsmath\|ellipsis\>'
            return "\<bs>\<bs>\\dots"
        elseif synIDattr(synID(line('.'),col('.')-1,0),"name") =~ '^texMath'
            \&& strpart(getline('.'), col('.')-3, 2) == '..'
            return "\<bs>\<bs>\\cdots"
        elseif strpart(getline('.'), col('.')-3, 2) == '..'
            return "\<bs>\<bs>\\ldots"
        else
            return '.'
        endif
    endfunction

endif

Привязку к клавише из того же файла:

Код: Выделить всё

if g:Tex_SmartKeyDot
    inoremap <buffer> <silent> . <C-R>=<SID>SmartDots()<CR>
endif

Подскажите что нужно изменить/добавить, что-бы это работало и в русской и в английской раскладках.

to Luinnar:
Эти строки в конфиге присутствуют.
А проблемы с ю проявляются только при редактировании .tex файлов, то есть при подключении плагина latex-suite.
При выключенном latex-suite это не наблюдается.
Какую версию latex-suite Вы используете?
У меня установлен vim-latex-1.8.23-20100129-r1104.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: latex-suite: раскладка клавиатуры

Сообщение sash-kan »

Luinnar
artbkv
у вас, вероятно, неудобно настроено включение нужной раскладки x-сервером?
подозреваю, что даже не включение, а переключение используете.
но это уже совсем другой вопрос. свою точку зрения я достаточно подробно изложил в «заметках на полях клавиатуры».
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu

Re: latex-suite: раскладка клавиатуры

Сообщение Luinnar »

sash-kan писал(а):
14.05.2010 23:20
Luinnar
artbkv
у вас, вероятно, неудобно настроено включение нужной раскладки x-сервером?
подозреваю, что даже не включение, а переключение используете.
но это уже совсем другой вопрос. свою точку зрения я достаточно подробно изложил в «заметках на полях клавиатуры».

Почитал - интересно и познавательно.
Но для редактирования русских текстов в vim'е мне всё же вариант с keymap больше нравится. Можно один раз включить русскую раскладку в режиме редактирования и потом забыть про переключение языка на долгое время, пока работаешь с документом. Когда переходишь в любой другой режим vim'а, будь то даже поиск или консоль vim'а ( : ), язык там остаётся свой, и большую часть времени вообще отпадает необходимость переключать раскладку.

А в остальном полностью с вами согласен, достало переключать раскладку, гораздо удобнее включать нужную. Благо, что когда код пишешь, нет необходимости переключать язык.
Спасибо сказали:
Ответить