Я не большой поклонник Ctrl-n
, я бы хотел использовать Ctrl-Space
. Любые идеи, как я могу это сделать?
Как изменить ключевое слово, используемое для автозаполнения в vim?
Ответ 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.