Каков наилучший способ добавить пользовательское сопоставление клавиш в vim / vi?(Существует ли свободное пространство ключей для настройки?) - PullRequest
3 голосов
/ 16 октября 2011

Я знаю, что вы можете добавить пользовательские сопоставления клавиш в vim с помощью imap в файле .vimrc.Мой вопрос: если нужно создать дополнительные пользовательские операторы, движения, команды и сопоставить их с ключами, каков наилучший способ добавить их, чтобы они не конфликтовали с существующими привязками?

Аналогия,в emacs множество пользовательских клавиш добавляются через последовательность Cc.Чтобы быть более техническим, есть ли в vim несвязанные ключи, которые позволяют настраивать пользователя?Другими словами, есть ли свободное пространство ключей, доступное пользователям?

1 Ответ

14 голосов
/ 16 октября 2011

:imap Введите , чтобы отобразить список отображений режима вставки.

Мой вопрос: если создать дополнительные пользовательские операторы, движения, команды и сопоставить их с клавишами, что является лучшим способом добавить их, чтобы они не конфликтовали с существующими привязками?

На мой взгляд, лучший способ - создать собственные команды, они начинаются с прописных букв, а собственные - строчными.

<Ч />

Кроме того, вы можете использовать <leader> Я использую , Некоторое использование \ .

например. :let mapleader = ","

затем вы можете использовать лидер, чтобы объединить его с другими клавишами, такими как , p для вызова команды, родной или пользовательской, см. Ниже:

:map <leader>p :MyCustomCommand<CR>

Пример пользовательского движения. Удалить третье слово после курсора.

nnoremap <leader>x :normal 2wdw<CR>

<Ч />

Несколько команд могут использоваться для создания новых , удаления и списка отображений , вот список режимов работы, начиная с :help map-overview

                                        Normal  Visual+Select  Operator-pending ~
:map   :noremap   :unmap   :mapclear     yes      yes                yes
:nmap  :nnoremap  :nunmap  :nmapclear    yes       -                  -
:vmap  :vnoremap  :vunmap  :vmapclear     -       yes                 -
:omap  :onoremap  :ounmap  :omapclear     -        -                 yes

дополнительная информация :help map

<Ч />

Вот пример функции, преобразованной в пользовательскую команду

function! MoveLastLines(f)
  exe '$-9,$w ' . a:f    "write last ten lines to the passed filename
  $-9,$d                 "delete last ten lines
endfunction

command! -nargs=1 -range MoveTo :call MoveLastLines(<f-args>)

Теперь обе строки ниже эквивалентны

  • :call MoveLastLines('newFile.txt')
  • :MoveTo newFile.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...