LINUX.ORG.RU

vim: не работают двухбуквенные комбинации в normal mode

 


0

1

Привет

Команда:

:if (exists("w:test")) | echo "Yes" | unlet w:test | else | echo "No" | let w:test=1 | endif
Маппинг:
:nnoremap z/ :if (exists("w:test")) \| echo "Yes" \| unlet w:test \| else \| echo "No" \| let w:test=1 \| endif<CR>
Команда работает. А вот по нажатию z/ ничего не происходит.
Что я делаю не так?

★★★★★

у меня работает. Ты точно в normal mode этот бинд нажимаешь? если надо в insert mode, тогда

inoremap z/ <ESC>:if (exists("w:test")) \| echo "Yes" \| unlet w:test \| else \| echo "No" \| let w:test=1 \| endif<CR><ESC>li

Xwo
()
Последнее исправление: Xwo (всего исправлений: 2)
Ответ на: комментарий от Xwo

Я о том, что юзать символы без модификатора в Insert Mode — это упорин высшей пробы. Естественно, ТС хочет в Normal Mode.

r3lgar ★★★★★
()
Ответ на: комментарий от Xwo

Теперь у меня нет сомнения, что ты тролль.

Автор, используй <expr> или execute.

StillSteal
()

Приехал домой. Твой вариант работает. Но на всякий случай проверь

:nnoremap z/ :exec 'if (exists("w:test")) \| echo "Yes" \| unlet w:test \| else \| echo "No" \| let w:test=1 \| endif'<CR>

и

:nnoremap z/ :<C-R>=exists("w:test") ? "echo 'Yes' \| unlet w:test" : "echo 'No' \| let w:test=1"<CR><CR>
StillSteal
()
Ответ на: комментарий от StillSteal

Дядя, я написал, что у меня его вариант работает. Перечитай мою месагу. И кстати:

:exe[cute] {expr1} .. Executes the string that results from the evaluation of {expr1} as an Ex command. Multiple arguments are concatenated, with a space in between. To avoid the extra space use the "." operator to concatenate strings into one argument. {expr1} is used as the processed command, command line editing keys are not recognized. Cannot be followed by a comment. Examples: > :execute «buffer» nextbuf :execute «normal» count . «w»

Красавчег! Инструкции превратить в строку, чтобы потом ее выполнить как инструкции

Xwo
()
Последнее исправление: Xwo (всего исправлений: 1)
Ответ на: комментарий от Xwo

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

Короче че я на тебя даже время трачу, по всем твоим новосозданным темам и по твоему предложению автору в инсерт моде замаппить z/ видно, что ты не с сей планеты.

StillSteal
()
Последнее исправление: StillSteal (всего исправлений: 1)
Ответ на: комментарий от StillSteal

запустить вим без плагинов и конфига

vim -u NONE --noplugin и посмотреть нет?

Что, в insert mode не разрешается маппить ничего? Я откуда знаю в каком режиме ему нужно мапить, может он в insert mode тыркал z/ и у него ничего не выполнялось. Вот и подумал ему кинуть inoremap

ну да, я-то не дурачок, чтобы в insert mode что-то маппить, но всё же есть, каюсь

" disable replace mode
imap <Ins> <Esc>i
" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo, so that you can undo CTRL-U after inserting a line break.
inoremap <C-U> <C-G>u<C-U>
" change layout
imap <silent> <C-^> <C-\><C-o>:call Hlpr_ChangeLayout(0)<CR>
" fj/jf == jump to normal mode
inoremap <silent> fj <Esc>l`^:set iminsert=0<CR>
inoremap <silent> jf <Esc>l`^:set iminsert=0<CR>
Xwo
()
Последнее исправление: Xwo (всего исправлений: 3)
Ответ на: комментарий от StillSteal

тебе говорят: если у кого-то работает, а у тебя не работает. Что первым делом надо сделать? Правильно, проверить на конфе без плагинов и твоего vimrc и искать причину и фиксить ее, а не применять exec или что-то еще. Что не так?

Xwo
()
Последнее исправление: Xwo (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.