vim настраивается с помощью команд emacs (только режим вставки)

10

Я был emacsпользователем, и я должен переключиться на vim. Но я пропускаю некоторые основные команды emacs в vimрежиме вставки:

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. ... и некоторые другие

Я знаю, что могу нажать, Escapeа затем нажать некоторые из следующих клавиш и, наконец, нажать клавишу i:

  1. ^
  2. $
  3. d$
  4. p
  5. :w [Войти]
  6. ...

Однако я хотел бы остаться в vimрежиме вставки и избегать нажатия кнопок Escape/ i.

В Интернете я нашел настройки для emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil). Но пока не найдено обратное: настроить vimдля использования emacsкоманд ...

Меня интересуют emacsкоманды только в vim режиме вставки . Просто некоторые основные команды, как bashкоманды: C-A, C-E, C-K, C-Y, C-U... (да C-Uне по умолчанию emacsкоманда , но я , как это тоже).

olibre
источник

Ответы:

7

Я отвечаю на этот вопрос четыре года спустя, потому что предоставленный ответ является частичным решением, которое не полностью решает исходный вопрос.

У меня точно такое же желание, как у olibre, и я хотел найти полное решение. Я подхожу к этому с другой точки зрения - я привык к редактированию строк Emacs в bash - но проблема та же. Я хочу перенести это в режим вставки Vim (только).

Далее рассматриваются все запросы на связывание клавиш в исходном вопросе, заданном olibre, плюс несколько дополнений:

" Mimic Emacs Line Editing in Insert Mode Only
inoremap <C-A> <Home>
inoremap <C-B> <Left>
inoremap <C-E> <End>
inoremap <C-F> <Right>
" â is <Alt-B>
inoremap â <C-Left>
" æ is <Alt-F>
inoremap æ <C-Right>
inoremap <C-K> <Esc>lDa
inoremap <C-U> <Esc>d0xi
inoremap <C-Y> <Esc>Pa
inoremap <C-X><C-S> <Esc>:w<CR>a

Единственные привязки, которые я не могу получить, чтобы работать в этой точке, это <Alt-B>и <Alt-F>, которые пропустили бы целые слова. Всякий раз, когда я связываю <Esc>, <Alt>или <Meta>комбинации, gVim (v7.4 на Windows) выводит символы с ударением. Пожалуйста, не стесняйтесь редактировать этот ответ, если у вас есть решение этой проблемы. Я заставил работать комбинации Alt, основываясь на предложении другого поста просто использовать специальные символы. Я вставил их выше.

редактировать

- (редактировать не оригинальным ответным постером) -

Я использовал следующее в Neovim и Windows 10. Возможно, вам придется заменить «A» на «M» в других ОС, поскольку «alt» может быть «meta» в других местах. Я не играл с этим достаточно.

inoremap <A-x> <Esc>:
inoremap <A-f> <Esc>lwi
inoremap <A-b> <Esc>bi
inoremap <A-S-f> <Esc>lWi
inoremap <A-S-b> <Esc>Bi
treehead
источник
Просто небольшое предложение: я думаю, что <Esc>paбыло бы лучше для<C-Y>
Яманеко
Похоже <C-K>, не работает, когда курсор находится в крайнем левом положении - он должен удалить всю строку, но Esc>lDaпервый символ будет удален.
Ин Сюн
7

Вы можете сопоставить любую команду в режиме вставки с чем угодно, используя :imapкоманду, или сохранить ввод с помощью :im. Для первого сопоставления вы можете набрать (в обычном режиме):

:im <C-A> <esc>^i

Который переходит в обычный режим (с escape), жмет ^для вас и возвращается в режим вставки. Смотрите справку для получения дополнительной информации:

:help :imap или короче: :h :im

Обратите внимание, что вы можете перезаписывать существующие сопоставления клавиш. Поместите команды в свой .vimrcфайл конфигурации, если вы хотите, чтобы они были там для каждого документа.

джокер
источник
спасибо за советы +1 :-) Но знаете ли вы, был ли этот вид сопоставления уже настроен? (например, без переписывания существующих сопоставлений клавиш). Где найти такой проект / конфигурацию? Я бы предпочел повторно использовать что-то уже сделанное (и надежное), чем пытаться сделать это самостоятельно (и упустить что-то важное). Приветствия
olibre
Должен ли я задать / переместить мой вопрос на superuser.com ?
2012 года
Спасибо! Вы можете увидеть, существует ли команда с помощью (логической) команды :im <c-a>. Если написано «Сопоставление не найдено», вы не будете перезаписывать что-либо. Я не думаю, что это станет намного более надежным, чем это ...
Джокер
Хм ... Я должен кодировать, тестировать свою конфигурацию, затем исправлять ошибки и снова .... Но я не знаю всех vimкоманд ... Пожалуйста, знаете, где я могу найти список :imпоследних аргументов? FYI, я также использоваться со следующими bashкомандами: M-backspace, M-F, M-B, M-D... Это будет хорошо , если кто - то уже сделал это и разделяет его работу, не так ли? (что-то вроде evil) Поэтому я мог бы повторно использовать его :imсопоставление клавиш, не делая это сам (подвержен ошибкам). Вы видите, что я имею в виду?
2012 года
Возможно, я не совсем понимаю, что вы имеете в виду, но вы можете найти все нестандартные сочетания клавиш, набрав :im. Чтобы сделать комментарий более высокого уровня: если вы хотите иметь возможность использовать Vim на нескольких платформах / компьютерах без необходимости всегда загружать свои собственные плагины, специальные режимы или vimrc-файл, я думаю, что лучше всего изучить / использовать стандартные Vim-команды максимально. Я сам сделал несколько сопоставлений клавиш, но всегда стараюсь найти стандартную альтернативу Vim. И это может быть довольно быстро. Одна вещь , которую я сделал это карта <esc>с ;j, что делает ваше отображение NR 1 , как легко , как ;jIи NR2 ;jA.
Джокер
6

Не полный ответ, но знаете ли вы о так называемом « простом режиме » Vim ( vim -y)? Он всегда находится в режиме редактирования по умолчанию, и делает довольно много того, что вы хотите, и вам не нужно ничего устанавливать или настраивать. Это делает CTRL-A, C, V, X, Y и т. Д. Из списка ключей :

Key mappings:
    <Down>      moves by screen lines rather than file lines
    <Up>        idem
    Q           does "gq", formatting, instead of Ex mode
    <BS>        in Visual mode: deletes the selection
    CTRL-X      in Visual mode: Cut to clipboard
    <S-Del>     idem
    CTRL-C      in Visual mode: Copy to clipboard
    <C-Insert>  idem
    CTRL-V      Pastes from the clipboard (in any mode)
    <S-Insert>  idem
    CTRL-Q      do what CTRL-V used to do
    CTRL-Z      undo
    CTRL-Y      redo
    <M-Space>   system menu
    CTRL-A      select all
    <C-Tab>     next window, CTRL-W w
    <C-F4>      close window, CTRL-W c

Гораздо более мощная версия - это Cream , который переназначает гораздо больше клавиш и делает основные команды похожими на другие редакторы, с которыми вы, возможно, знакомы.

Существует также плагин Vimacs , который включает все основные сопоставления клавиш в emacs. Он прост в установке и может делать то, что вы хотите (я никогда не пробовал).

ire_and_curses
источник
Очень интересно +1 :-) Я читаю / проверяю все ваши ссылки ... Я дам вам больше отзывов позже. Спасибо. Приветствия
olibre
1
Ключи «легкого режима» не имеют ничего общего с ключами Emacs. Но «vimacs» кажется интересной вещью. Я только что установил, и, несмотря на старость, он все еще работает.
Привет, Ангел,