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команда , але я , як це теж).

Відповіді:


7

Я відповідаю на це запитання через чотири роки, оскільки надана відповідь є частковим рішенням, яке не повністю стосується початкового питання.

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

Далі розглядаються всі запити на введення клавіатури в оригінальному запитанні, поставленому олібре, плюс кілька додаткових даних:

" 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

Лише невелика пропозиція: Я думаю, що <Esc>paбуло б краще для<C-Y>
Яманеко

Схоже, <C-K>він не працює, якщо курсор знаходиться в лівій частині лівого краю - він повинен видалити весь рядок, але Esc>lDaперший знак залишить без змін.
Інь Сюн

7

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

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

Перехід у звичайний режим (з втечею), натискає ^на вас і повертається до режиму вставки. Додаткову інформацію див. У довідці:

:help :imap або коротше: :h :im

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


дякую за поради +1 :-) Але чи знаєте ви, чи подібне відображення вже було налаштовано? (наприклад, без перезапису існуючих ключових відображень). Де знайти такий проект / конфігурацію? Я вважаю за краще повторно використовувати щось вже зроблене (і надійне), ніж намагатися зробити це самостійно (і пропустити щось важливе). Ура
олібре

Чи потрібно запитати / перенести своє запитання на superuser.com ?
олібре

Дякую! Ви можете бачити, чи існує команда з командою (логіка) :im <c-a>. Якщо в ньому написано "Не знайдено відображення", ви не будете перезаписати жодне. Я не думаю, що він стане набагато надійнішим за це ...
Джокер

Гумм ... я повинен кодувати, перевірити свою конфігурацію, потім виправити помилки, і знову .... Але я не знаю всіх vimкоманд ... Будь ласка, чи знаєте ви, де я можу знайти список :imостанніх аргументів? FYI, я також використовуватися з наступними bashкомандами: M-backspace, M-F, M-B, M-D... Це буде добре , якщо хто - то вже зробив це і розділяє його роботу, чи не так? (щось на кшталт evil) Тому я міг би повторно використовувати його :imключове відображення, не роблячи його самостійно (схильний до помилок). Ви бачите, що я маю на увазі?
олібре

Я не можу точно зрозуміти, що ви маєте на увазі, але ви можете знайти всі нестандартні зіставлення ключів, ввівши :im. Щоб зробити коментар вищого рівня: якщо ви хочете мати можливість використовувати Vim на декількох платформах / комп’ютерах, не завжди завантажуючи власні плагіни, спеціальні режими або vimrc-файл, я думаю, що найкраще робити - це вивчити / використовувати якомога більше стандартних команд Vim. Я зробив кілька ключових відображень самостійно, але завжди намагаюся знайти стандартну Vim-альтернативу. І це може бути досить швидко. Одна річ , яку я зробив це карта <esc>з ;j, що робить ваше відображення NR 1 , як легко , як ;jIі NR2 ;jA.
Джокер

6

Не повна відповідь, але чи знаєте ви так званий " легкий режим " Віма ( 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. Встановити його легко і може робити все, що завгодно (я ніколи цього не пробував).


Дуже цікаво +1 :-) Я читаю / тестую всі ваші посилання ... Я дам вам більше відгуків пізніше. Дякую. Ура
олібре

1
Клавіші «легкого режиму» не мають нічого спільного з Emacs. Але «vimacs» здається цікавою справою. Я щойно встановив, і незважаючи на те, що є старим, він все ще працює.
Привіт-Ангел
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.