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

Как изменить ключевое слово, используемое для автозаполнения в vim?

Я не большой поклонник Ctrl-n, я бы хотел использовать Ctrl-Space. Любые идеи, как я могу это сделать?

4b9b3361

Ответ 1

if has("gui_running")
    " C-Space seems to work under gVim on both Linux and win32
    inoremap <C-Space> <C-n>
else " no gui
  if has("unix")
    inoremap <Nul> <C-n>
  else
  " I have no idea of the name of Ctrl-Space elsewhere
  endif
endif

Ответ 2

Мне также нравится преобразование Ctrl + Space.

" Remap code completion to Ctrl+Space {{{2
inoremap <Nul> <C-x><C-o> 

В вашем случае вы хотите:

inoremap <Nul> <C-n>

Ответ 3

Если вы хотите сопоставить его, скажем, с Ctrl-E, это будет примерно так:

inoremap <C-E> <C-N>

Проблема с Ctrl - Space заключается в том, что большинство терминалов будут рассматривать это как пространство. Предполагаю, что вы используете терминальную программу внутри X; если вы используете что-то другое, вам нужно будет предоставить соответствующие замены самостоятельно.

Bash readline обычно имеет Ctrl - V, отображаемый для "обработки следующего ключа как литерала". Таким образом, нажав Ctrl - V, тогда Home в командной строке bash будет вставлять ^[[H или что-то подобное в командной строке, а не перейти к началу строки. Попробуйте нажать Ctrl - V, затем Ctrl - Space. Вероятно, вы просто увидите пробел.

В этом случае вам придется обманывать xmodmap или писать собственные /usr/share/X 11/xkb/* файлы, чтобы сообщить X, чтобы вывести что-то другое при нажатии Ctrl - Space. Такие программы, как Firefox, не волнуют; они обнаруживают, какой базовый ключ нажат, и выясните, какие модификаторы нажаты. Но большинство программ на основе терминалов просто видят Ctrl - Space как пространство, если вы не укажете X для обработки Space и Ctrl - Space по-разному.

Я сомневаюсь, что вы можете сделать это изменение только с помощью xmodmap; вам, вероятно, понадобится выполнить хакерство нижнего уровня /usr/share/X 11/xkb/*. Это сложно, и я даже не знаю, используете ли вы X в первую очередь, поэтому я просто оставлю его там.

Некоторые терминалы, такие как urxvt, позволяют указывать собственные привязки. Как и Firefox, они могут сказать, когда это Space и когда это Control-Space, даже если вы ничего не делаете для настройки X. Поэтому вы можете сказать urxvt вывести "\ 033I_TYPED_CONTROL_SPACE_DAMMIT", когда вы нажимаете Ctrl - Space. И тогда вы могли бы сказать vim, чтобы сопоставить это с <C-N>.

EDIT: Я забыл, что Ctrl-Space используется для вывода \0 (я перепутал это где-то еще на моей клавиатуре). В этом случае вся сложность, описанная выше, не нужна. То, что я сказал, применимо к кому-то, кто хотел бы использовать более экзотическое отображение, например Ctrl -colon или Alt - Space.