Подтвердить что ты не робот

Как сопоставить ctrl x ctrl o ctrl space в терминале vim?

После поиска бит в сети кажется, что я не могу сопоставить Ctrl Space с чем-либо/alot. Есть ли способ сделать это сегодня, то, что я нашел, обычно было 2 года.

4b9b3361

Ответ 1

Я столкнулся с той же проблемой, короткий ответ - да, вы можете, и не только в версии gui. Добавление этого на вас .vimrc достаточно:

inoremap <C-Space> <C-x><C-o>
inoremap <[email protected]> <C-Space>

Ответ 2

Проблема заключается в том, что Terminal.app не правильно интерпретирует <C-Space>, и Vim понимает его как <[email protected]>, который является встроенным отображением (:help [email protected]).

Возможно, в вашем .vimrc может быть что-то вроде следующего:

if !has("gui_running")
    inoremap <[email protected]> <C-x><C-o>
endif

который, похоже, работает здесь, но мне не нравится идея переопределения встроенных модулей.

Вместо этого вы должны попробовать с <Leader> (:help leader), это дает вам огромные возможности для определения ваших собственных сопоставлений и (в зависимости от выбранного вами mapleader) не будет мешать ярлыкам OS/app/ограничения и, следовательно, быть более портативными.

С этим в моем .vimrc:

let mapleader=","
inoremap <leader>, <C-x><C-o>

Я просто нажал ,,, чтобы завершить имена методов.

Ответ 3

nitpicker нарушил решение pablox. Суть решения заключалась в переназначении. Поэтому, когда вы отключите переназначение, это не сработает.
Если вы действительно хотите вставить noremap, это выглядит так:

inoremap <expr><C-space> neocomplete#start_manual_complete()
imap <[email protected]> <C-Space>

Что будет не работать: inoremap <[email protected]> <C-Space> ', потому что часть <C-Space> не будет переназначена сама.

Ответ 4

  • Вы пробовали :inoremap <c-space> <c-x><c-o>?
  • Выполняет ли Ctrl X Ctrl O что-либо при вводе в режиме вставки? Установлен ли omnifunc?

Ответ 5

Добавьте следующий код в ~/.vimrc:

" Ctrl-Space for completions. Heck Yeah!
inoremap <expr> <C-Space> pumvisible() \|\| &omnifunc == '' ?
        \ "\<lt>C-n>" :
        \ "\<lt>C-x>\<lt>C-o><c-r>=pumvisible() ?" .
        \ "\"\\<lt>c-n>\\<lt>c-p>\\<lt>c-n>\" :" .
        \ "\" \\<lt>bs>\\<lt>C-n>\"\<CR>"
imap <[email protected]> <C-Space>

Источник: https://coderwall.com/p/cl6cpq

Ответ 6

Чтобы разместить как Windows, так и Linux, я применил это к ~/.vimrc

if has("unix")
  inoremap <[email protected]> <c-x><c-o>
elseif has("win32")
  inoremap <C-Space> <c-x><c-o>
endif