LINUX.ORG.RU

$PAGER /etc/inputrc
Там есть примеры, но по хорошему надо нажимать Ctrl+v и вводить интересующую комбинацию, это должно выдать escape-код.

Пользовательский соот-но ~/.inputrc. Правда, с его использованием у меня странные глюки иногда проявляются.

Средствами баша можно ещё так:

bind -x '"\C-m":"shell_func_name"'
У меня это в специальном шелле переопределяет энтер.

Deleted
()
Последнее исправление: fargred (всего исправлений: 2)

вот эта штучка в ~/.Xresources чинит большинство таких моментов в urxvt, конкретно nmap <C-A-Down> проверил - работает.

! emulate XTerm for proper recognition of key combinations in Vim
!URxvt.keysym.Up              : \033[A  !breaks arrow keys in Vim
!URxvt.keysym.Down            : \033[B  !breaks arrow keys in Vim
!URxvt.keysym.Right           : \033[C  !breaks arrow keys in Vim
!URxvt.keysym.Left            : \033[D  !breaks arrow keys in Vim
!URxvt.keysym.Page_Up         : \033[5~ !breaks scrolling in Rxvt
!URxvt.keysym.Page_Down       : \033[6~ !breaks scrolling in Rxvt
!URxvt.keysym.Home            : \033[H  !breaks navigation in Vim
!URxvt.keysym.End             : \033[F  !breaks navigation in Vim
URxvt.keysym.S-Up             : \033[1;2A
URxvt.keysym.S-Down           : \033[1;2B
URxvt.keysym.S-Right          : \033[1;2C
URxvt.keysym.S-Left           : \033[1;2D
!URxvt.keysym.S-Page_Up       : captured by terminal for scrolling
!URxvt.keysym.S-Page_Down     : captured by terminal for scrolling
URxvt.keysym.S-Home           : \033[1;2H
URxvt.keysym.S-End            : \033[1;2F
URxvt.keysym.M-Up             : \033[1;3A
URxvt.keysym.M-Down           : \033[1;3B
URxvt.keysym.M-Right          : \033[1;3C
URxvt.keysym.M-Left           : \033[1;3D
URxvt.keysym.M-Page_Up        : \033[5;3~
URxvt.keysym.M-Page_Down      : \033[6;3~
URxvt.keysym.M-Home           : \033[1;3H
URxvt.keysym.M-End            : \033[1;3F
URxvt.keysym.M-S-Up           : \033[1;4A
URxvt.keysym.M-S-Down         : \033[1;4B
URxvt.keysym.M-S-Right        : \033[1;4C
URxvt.keysym.M-S-Left         : \033[1;4D
!URxvt.keysym.M-S-Page_Up     : seen as Rxvt.keysym.S-Page_Up
!URxvt.keysym.M-S-Page_Down   : seen as Rxvt.keysym.S-Page_Down
URxvt.keysym.M-S-Home         : \033[1;4H
URxvt.keysym.M-S-End          : \033[1;4F
URxvt.keysym.C-Up             : \033[1;5A
URxvt.keysym.C-Down           : \033[1;5B
URxvt.keysym.C-Right          : \033[1;5C
URxvt.keysym.C-Left           : \033[1;5D
URxvt.keysym.C-Page_Up        : \033[5;5~
URxvt.keysym.C-Page_Down      : \033[6;5~
URxvt.keysym.C-Home           : \033[1;5H
URxvt.keysym.C-End            : \033[1;5F
URxvt.keysym.C-S-Up           : \033[1;6A
URxvt.keysym.C-S-Down         : \033[1;6B
URxvt.keysym.C-S-Right        : \033[1;6C
URxvt.keysym.C-S-Left         : \033[1;6D
!URxvt.keysym.C-S-Page_Up     : seen as Rxvt.keysym.S-Page_Up
!URxvt.keysym.C-S-Page_Down   : seen as Rxvt.keysym.S-Page_Down
URxvt.keysym.C-S-Home         : \033[1;6H
URxvt.keysym.C-S-End          : \033[1;6F
URxvt.keysym.M-C-Up           : \033[1;7A
URxvt.keysym.M-C-Down         : \033[1;7B
URxvt.keysym.M-C-Right        : \033[1;7C
URxvt.keysym.M-C-Left         : \033[1;7D
URxvt.keysym.M-C-Page_Up      : \033[5;7~
URxvt.keysym.M-C-Page_Down    : \033[6;7~
URxvt.keysym.M-C-Home         : \033[1;7H
URxvt.keysym.M-C-End          : \033[1;7F
URxvt.keysym.M-C-S-Up         : \033[1;8A
URxvt.keysym.M-C-S-Down       : \033[1;8B
URxvt.keysym.M-C-S-Right      : \033[1;8C
URxvt.keysym.M-C-S-Left       : \033[1;8D
!URxvt.keysym.M-C-S-Page_Up   : seen as Rxvt.keysym.S-Page_Up
!URxvt.keysym.M-C-S-Page_Down : seen as Rxvt.keysym.S-Page_Down
URxvt.keysym.M-C-S-Home       : \033[1;8H
URxvt.keysym.M-C-S-End        : \033[1;8F
science ★★☆
()
Ответ на: комментарий от science

и немного офтопа на десерт:

вот эта штучка в .vimrc избавляет каждый раз перед пастой нажимать set pastetoggle=<F2>

let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

паста теперь работает автоматически с сохранением форматирования. Если работаете в тмуксе, то вот так нужно чуток по другому:

function! WrapForTmux(s)
  if !exists('$TMUX')
    return a:s
  endif

  let tmux_start = "\<Esc>Ptmux;"
  let tmux_end = "\<Esc>\\"

  return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end
endfunction

let &t_SI .= WrapForTmux("\<Esc>[?2004h")
let &t_EI .= WrapForTmux("\<Esc>[?2004l")

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

science ★★☆
()
Ответ на: комментарий от anonymous

Емакс - как убунта. Всё якобы работает, а что и как чинить - непонятно

dmitry_malikov ★★
() автор топика
Ответ на: комментарий от science

Спасибо! Не искал такого решения, но это определённо то, что нужно.

xaizek ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.