У вас могут быть привязки клавиш в Vim? - PullRequest
73 голосов
/ 26 мая 2011

В моем файле .vimrc есть привязка клавиш для комментариев, которые вставляют двойную косую черту (//) перед строкой

" the mappings below are for commenting blocks of text
:map <C-G> :s/^/\/\//<Esc><Esc>
:map <C-T> :s/\/\/// <Esc><Esc>

Однако, когда я редактирую скрипты Python, я хочу изменить это на # знак для комментариев

В моей папке .vim/ftdetect есть файл Python.vim, в котором также есть настройки для табуляции и т. Д. Что такое код для переопределения сочетаний клавиш, если это возможно, поэтому я использую Python:

" the mappings below are for commenting blocks of text
:map <C-G> :s/^/#/<Esc><Esc>
:map <C-T> :s/#/ <Esc><Esc>

Ответы [ 5 ]

75 голосов
/ 26 мая 2011

Вы можете использовать :map <buffer> ... для создания локального отображения только для активного буфера. Это требует, чтобы ваш Vim был скомпилирован с +localmap.

Так что вы можете сделать что-то вроде

autocmd FileType python map <buffer> <C-G> ...
60 голосов
/ 26 мая 2011

Папка ftdetect предназначена для сценариев определения типов файлов. Плагины файловых типов должны находиться внутри папки ftplugin. Тип файла должен быть включен в имя файла в одной из следующих трех форм:

  • .../ftplugin/<filetype>.vim
  • .../ftplugin/<filetype>_foo.vim
  • .../ftplugin/<filetype>/foo.vim

Например, вы можете отобразить комментарии для типа файла cpp, поместив в .../ftplugin/cpp_mine.vim следующее:

:map <buffer> <C-G> :s/^/\/\//<Esc><Esc>
:map <buffer> <C-T> :s/\/\/// <Esc><Esc>
4 голосов
/ 09 января 2019

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

augroup pscbindings
  autocmd! pscbindings
  autocmd Filetype purescript nmap <buffer> <silent> K :Ptype<CR>
  autocmd Filetype purescript nmap <buffer> <silent> <leader>pr :Prebuild!<CR>
augroup end

Vim не сбрасывает настройки autocmds при вводе vimrc, поэтому запуск vim, изменение чего-либо в вашем vimrc и запуск :so ~/.vimrc будут определять autocmds дважды. Вот почему привязки сгруппированы и очищены с autocmd! group_name. Вы можете прочитать подробнее здесь .

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

4 голосов
/ 24 мая 2014

Кстати ... если ваша основная проблема заключается в комментировании ... вы должны проверить плагин 'nerdcommenter', это самый быстрый способ комментировать / раскомментировать ваш код в java / c / c ++ / python / dos_batch_file / и т. Д. И т. Д.

0 голосов
/ 28 июня 2018

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

filetype plugin on

или

:filetype plugin on

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...