Отображение команды с другой командой в vim - PullRequest
2 голосов
/ 12 октября 2011

Просто пытаюсь переназначить команду, чтобы открыть bufferexplorer (\ be) с более короткой версией (\ b).Моя попытка:

map <leader>b <ESC><leader>be<CR>

Само собой разумеется, это не работает.Любая помощь?

Ответы [ 3 ]

0 голосов
/ 12 октября 2011

Так как символ лидера по умолчанию равен \, вы можете просто

map <leader>b <ESC>\be<CR>

, но если вы заботитесь о действительном значении символа лидера, попробуйте что-то вроде

:execute 'map <leader>b <ESC>' . (exists('mapleader') ? mapleader : '\') . 'be<CR>'

где конструкция (exists('mapleader') ? mapleader : '\')заменяет соответствующий символ лидера (см. :help mapleader).

Примечание: если вы измените mapleader значение после этой команды отображения, отображение станет бесполезным

0 голосов
/ 12 октября 2011

Почему у вас там <CR>? Ваше отображение вызовет bufexplorer и немедленно выйдет из него, выбрав буфер под курсором (это текущий буфер, не так ли?) (Я могу ошибаться, поскольку я использовал bufexplorer только в течение нескольких часов). Правильно это

map <leader>b <C-\><C-n><leader>be

Я также предлагаю заменить <Esc> на <C-\><C-n>, который безоговорочно выходит из обычного режима без звукового сигнала, его также можно использовать для удаления регистра и подсчета.

Обратите внимание, что переменная mapleader должна находиться в том же состоянии, в каком она была, когда bufexplorer определил свое отображение <leader>be.

0 голосов
/ 12 октября 2011

Сама оригинальная команда, скорее всего, является просто отображением команды режима командной строки. Я посмотрел \be в справке BufExplorer, и он говорит, что альтернативный способ вызова будет :BufExplorer. Поэтому попробуйте следующее:

noremap <silent> <leader>b :BufExplorer<CR>

Или, может быть, nmap вместо map в зависимости от ваших потребностей.

...