LINUX.ORG.RU

Как обойтись без навигации стрелками и перехода в командный режим при autopair кавычек в insert mode?

 grok in vi,


1

3
Your problem with Vim is that you don't grok vi.

Да, отключил себе все стрелки (Up,Down,Left,Right) во всех режимах. Не работают вообще. Понравилось, теперь даже если рука, в следствии бага мышечной памяти и тянется нажать стрелочку, то фейл.

Но как быть при autopair кавычек? Например у меня это реализовано так (хотя есть плагины, но мне в целом хватает и этого вполне.):

 inoremap ( ()<Left>
 inoremap [ []<Left>
 inoremap { {}<Left>
 inoremap " ""<Left>
 inoremap ' ''<Left>
Получается, вводя " я получаю:
 "▮" 
где ▮ это курсор. Ну т.е. всё понятно.

Как в таком случае, после ввода контента выйти из кавычек или другой пары символов - без переключения в командный режим. Юзать каждый раз C-o или делать маппинг специально такого случая по типу:

 inoremap <A-h> <C-o>h
 inoremap <A-l> <C-o>l
или есть более разумное, идеологически верное решение?

★★☆

1. Не использовать autopair.
2. Использовать плагин, который будет скипать кавычку, если она уже стоит. Пример: «bla-bla-bla|». Курсор на месте пайпа. Вводите кавычку, курсор перемещается за правую кавчку, без вставки «лишней» кавычки - «bla-bla-bla»|

andreyu ★★★★★
()

sarcasm off

Отключенные стрелки это вин? Ты умеешь печатать в слепую? удобнее ли без стрелок?

actics
()
Ответ на: комментарий от actics

Отключенные стрелки это вин?

Безусловно. Ибо ранее приходилось читить вместо того, чтобы разобраться - а как в данном случае правильнее и vim'ее поступить.

Ты умеешь печатать в слепую?

Ну года два точно на клавиатуру не смотрю вообще.

удобнее ли без стрелок?

Конечно, пока сам не попробовал - не верил, лепил сказки в стиле «зачем ограничивать себя» и так далее.

science ★★☆
() автор топика
Ответ на: комментарий от actics

Отключенные стрелки это вин? Ты умеешь печатать в слепую? удобнее ли без стрелок?

Однозначно вин. А еще <esc> замапить на jk в режиме вставки.

baverman ★★★
()
Ответ на: комментарий от baverman

или есть более разумное, идеологически верное решение?

Пользуюсь delimitMate. Для пропуска всех парных символов, например foo(bar(«str|»)), там есть специальная функция. Для пропуска одного, сделал как ты, только <c-l>.

baverman ★★★
()
Ответ на: комментарий от science

Ибо ранее приходилось читить вместо того, чтобы разобраться
читить?

это как)

actics
()

Как обойтись без навигации стрелками и перехода в командный режим ...

Может начать присматриваться в сторону emacs+paredit?

anonymous
()

тред не читал

emacs уже советовали?

lazyklimm ★★★★★
()
Ответ на: комментарий от val-amart

Можно будет вместо того, чтобы тянуться до Esc, нажимать jk. Очевидно же. Полезно для людей без emacs-опыта:3

Anatolik ★★
()
Последнее исправление: Anatolik (всего исправлений: 1)
Ответ на: комментарий от science

Как называется такой плагин?

Хз, не пользуюсь автоскобками. Для меня они неудобны.

andreyu ★★★★★
()
Ответ на: комментарий от baverman

А еще <esc> замапить на jk в режиме вставки.

Тоже годная идея.

andreyu ★★★★★
()
Ответ на: комментарий от val-amart

это как? что получиться?

неделька буквально и от Esc - как от стрелок и прочих ненужностей плеваться будешь :)

Лично мне более удобно jj т.к. jk не всегда срабатывает.

science ★★☆
() автор топика
Ответ на: комментарий от science

не-не-не, мне это кажется контр-продуктивным - ескейп удобно расположен, а jj может потребоваться ввести. // стрелочками не пользуюсь

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

а jj может потребоваться ввести

Когда вводил последний раз?

// До esc тянуться очень долго, можно сказать это основная причина по которой так долго не пользовался vim.

baverman ★★★
()

Проблема решена :)

https://github.com/jiangmiao/auto-pairs

или

https://github.com/Raimondi/delimitMate

Если чё - auto-pairs более интересен, например центрирует курсор при добавлении пробелов и многое другое.

science ★★☆
() автор топика
Последнее исправление: science (всего исправлений: 2)
Ответ на: комментарий от science

например центрирует курсор при добавлении пробелов

Ты невнимательно читал помощь.

и многое другое.

Которое пересекается с surround?

// Вообще плагин без doc/plugin.txt это негодный, плохой плагин. ИМХО.

baverman ★★★
()
Ответ на: комментарий от baverman

без doc/plugin.txt

Автор - китаец, пока-что не осилил написать :)

science ★★☆
() автор топика
Ответ на: комментарий от habamax

Caps же!

Почти тоже самое, что и Esc. С jj/jk/kj не сравнить. Да и собственно как раскладку переключать, если она на капсе же.

science ★★☆
() автор топика
Ответ на: комментарий от science

Почти тоже самое, что и Esc. С jj/jk/kj не сравнить.

Мизинец с «A» чуть левее жать и все дела, с Esc не сравнить.

jj/jk/kj с русского на английский надо переключаться? Ведь если мапить также и русский вариант, то оо/ол/ло встречаются достаточно часто в с'ло'вах, что будет вызывать 'ло'жные выходы в нормальный режим. С'оо'тветственно, ловим проблемы на пустом месте.

Да и собственно как раскладку переключать, если она на капсе же.

Два шифта, ктрл+шифт, альт+шифт, правый альт, правый ктрл...

habamax ★★★
()
Ответ на: комментарий от habamax

то оо/ол/ло встречаются достаточно часто в с'ло'вах

Верно. Но киррилицей я пользуюсь очень-очень не часто. И накрайняк замапил ОЛ.

baverman ★★★
()

А объясните мне, во-первых, как «отключил себе все стрелки (Up,Down,Left,Right) во всех режимах»?. А во-вторых как навигация-то осуществляется в режиме редактирования? В emacs-style, с кучей зажатых модификаторов?

anonymous
()
Ответ на: комментарий от anonymous

А объясните мне, во-первых, как «отключил себе все стрелки (Up,Down,Left,Right) во всех режимах»?.

nmap <left> <nop>
imap <left> <nop>
и т.д.

А во-вторых как навигация-то осуществляется в режиме редактирования? В emacs-style, с кучей зажатых модификаторов?

Практически никак, поэтому грамотно настроенный ESC сильно помогает.

habamax ★★★
()
Ответ на: комментарий от anonymous

А во-вторых как навигация-то осуществляется в режиме редактирования?

В режиме редактирования не должно быть никакой навигации, это скилл, который приходит со временем и опытом, потому что - если реально замерить и засечь время/стоимость нажатий, то получается гораздо быстрее осуществлять навигацию в командном режиме, а редактировать в insert mode.

Простой пример, ты неправильно ввел слово «непровильно»:

в insert mode пришлось бы:

Ctrl+← → → → → → Backspace а Ctrl+→ 
в normal mode:
Esc F о r а A
Т.е. на треть экономнее и легче, -3 нажатия. И это простой пример, а если ошибка на пару предложений ранее была допущена?

В общем, на stackoverflow множество разжеванных примеров есть. Нужно VIM использовать как VIM, а не обычный редактор.

science ★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.