GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué el mapa de modo de inserción “” se inserta a sí mismo de manera impredecible o ejecuta las pulsaciones de teclas previstas?

En Vim 7.3.1-762, mintty 1.1.2 (xterm), cygwin, Windows XP, el mapa de modo de inserción <F4> ejecuta las pulsaciones de teclas previstas en un momento pero se inserta en otro momento. Este comportamiento no determinista ocurre especialmente si mantengo presionado <F4> tecla presionada.

¿Cómo puedo hacer que el comportamiento sea predecible en múltiples versiones de Vim, terminal y sistema operativo?

Este es el código que definí en mi ~/.vimrc archivo, que me parece relevante:

set compatible
set timeout
set ttimeout
set timeoutlen=1000
set ttimeoutlen=100
imap <F4> <C-><C-O>:set relativenumber! relativenumber?<CR>

Si asigno el mapeo a una tecla de función arriba de <F4> , p.ej. <F5> , <S-F7> etc. No experimento el comportamiento mencionado anteriormente. También si deshabilito el timeout opción con set notimeout parece funcionar.

Respuesta aceptada:

Hice el <F4> key aparentemente funciona en todos los modos usando map <expr> mapas de expresión de la siguiente manera:

MapOptToggle <F4> relativenumber
MapOptToggle! <S-F4> number

command! -bang -nargs=+ MapOptToggle call <SID>MapOptToggle(<bang>0, <f-args>)
function! s:MapOptToggle(bang, key, opt)
  function! s:ToggleOpt(opt)
    if mode() =~# 'vno?' || !&showmode
      exec 'set ' . a:opt . '! ' . a:opt . '?'
    else
      exec 'set ' . a:opt . '!'
    endif
    redraw
    return ''
  endfunction
  let a='noremap'
  let b='<unique> <silent> <expr> ' . a:key . ' <SID>ToggleOpt(' . string(a:opt) . ')'
  exec a . ' ' . b
  exec a . '! ' .  b
  exec 'set ' . (a:bang ? 'no' : '') . a:opt
endfunction

Pero aún así mi respuesta no explica el comportamiento impredecible del imap mapa de modo de inserción.


Linux
  1. Cómo configurar claves SSH

  2. LANG=C se encuentra en varios scripts /etc/init.d/*. ¿Qué hace LANG=C y por qué necesita configurar LANG=C?

  3. ¿Por qué agregar IP local y nombre de usuario en scp devuelve un error de clave pública?

  4. Deshabilitar completamente la clave PrntScr

  5. ¿Qué hace 'set -e' y por qué podría considerarse peligroso?

Cómo configurar el inicio de sesión SSH sin contraseña

Linux:¿por qué no funciona Setuid?

¿Por qué el tiempo de Unix comienza en 1970-01-01?

¿Por qué `exit &` no funciona?

Cómo configurar claves SSH en Ubuntu 18.04

Cómo configurar WireGuard VPN en Linux