Если вы хотите, чтобы сервер MySQL решал набор символов, а не PHP как клиент (старое поведение, предпочтительнее, на мой взгляд), попробуйте добавить skip-character-set-client-handshake
к вашему my.cnf
в [mysqld]
и перезапустить mysql
.
Это может вызвать проблемы, если вы используете что-либо, кроме UTF8.
Хотя я бы не рекомендовал менять механику курсора по умолчанию, одним из способов достижения такого поведения является использование следующего отображения вставки в режиме Insert.
:inoremap <silent> <Esc> <Esc>`^
Здесь клавиша Esc перегружена в режиме вставки дополнительно запустить команду `` ^ `, которая перемещает курсор в позицию, где он был последним, когда режим Вставки был остановлен. Так как в этом отображении он выполняется сразу же после выхода из режима вставки с помощью Esc, курсор остается на один символ справа по сравнению с его положением с поведением по умолчанию.
В отличие от некоторых других обходных решений, этого не требуется Vim будет скомпилирован с функцией +ex_extra
.
Хотя есть уловки для решения этой проблемы (например, сопоставления ESC, упомянутые в предыдущих двух сообщениях), нет последовательного способа сделать это. Причина в том, что нет способа определить метод, который использовался для входа в режим вставки. В частности, с учетом строки abcDefg
с помощью курсора на D
:
c
и D
. Обычный ESC поместит курсор на c
; <C-O>:stopinsert<CR>
(или метод обратного хода) поместит курсор на D
. D
и e
. Обычный ESC поместит курсор на D
; <C-O>:stopinsert<CR>
поместит курсор на e
. Если вы действительно хотите это сделать, вы можете выманить его примерно так:
let insert_command = "inoremap <ESC> <C-O>:stopinsert<CR>"
let append_command = "iunmap <ESC>"
nnoremap i :exe insert_command<CR>i
nnoremap a :exe append_command<CR>a
НО: помните, что это будет иметь дело только с i
и a
как методы ввода: если вы используете режим визуального блока, I
или A
или что-то еще, вам нужно будет придумать новые команды для (и их много). Поэтому я настоятельно рекомендую вам не делать этого.
Лично я бы рекомендовал привыкнуть к поведению по умолчанию. Вы можете легко сделать это логичным для i
ИЛИ логичным для a
. Если вы измените значение по умолчанию на логическое для i
за счет логического для a
, вы просто смутитесь, когда будете использовать стандартную установку vi / vim.
Я верю, что правильный способ сделать это
au InsertLeave * call cursor([getpos('.')[1], getpos('.')[2]+1])
inoremap <silent> <Esc> <C-O>:stopinsert<CR>
в вашем .vimrc