根据skywind3000大大的文章Vim 中正确使用 Alt映射,我的vim配置也将alt键作了映射,避免了很多弹钢琴
似的操作。
我现在的用软件的风格,是吃饭的家伙尽量用免费的软件。 vim/neovim、R/Rstudio、eclipse/vscode全是开源免费的, 终端linux下用gnome-termal和terminator,mac下是iterm2。
windows用mobaxterm,相比较商业软件 xshell和 securecrt,最大的问题是不能映射Alt
到meta
键导致ssh到我的服务器上后,不能用alt键,有些我精心设置的快捷功能不能实现。在它的软件设置菜单里,根本找不到设置项,网上查找提到要用autohotkey
,装上去之后发现太麻烦。
后来还是根据前面skywind3000的文章里面一句话解决:
任意平台下面的 xterm 可以配置 ~/.Xdefaults 来设置这个行为。
放狗搜索下,在这个文件里加下面这个设置: XTerm*metaSendsEscape: true
,解决问题。
一个小问题是这样就不能用alt+1,2,3.....
切换tab,不知道有没有知道办法?
xshell里可以只映射左或右alt键作为esc,另一个alt保留原功能来解决。
补充个vim函数,正确映射alt键
" alt meta key
function! Alt_meta_map()
set ttimeout
if $TMUX != ''
set ttimeoutlen=20
elseif &ttimeoutlen > 60 || &ttimeoutlen <= 0
set ttimeoutlen=60
endif
if has('nvim') || has('gui_running') && !OSX()
return
endif
function! s:metacode(key)
exec "set <M-".a:key.">=\e".a:key
endfunc
for i in range(26)
call s:metacode(nr2char(char2nr('a') + i))
call s:metacode(nr2char(char2nr('A') + i))
endfor
for i in range(10)
call s:metacode(nr2char(char2nr('0') + i))
endfor
let s:list = [',', '.', '-', '_', ';', ':', '/', '?']
for c in s:list
call s:metacode(c)
endfor
if has('gui_macvim')
let a:letters_dict={
\ 'a':'å',
\ 'b':'∫',
\ 'c':'ç',
\ 'd':'∂',
\ 'e':'´',
\ 'f':'ƒ',
\ 'g':'©',
\ 'h':'˙',
\ 'i':'ˆ',
\ 'j':'∆',
\ 'k':'˚',
\ 'l':'¬',
\ 'm':'µ',
\ 'n':'˜',
\ 'o':'ø',
\ 'p':'π',
\ 'q':'œ',
\ 'r':'®',
\ 's':'ß',
\ 't':'†',
\ 'u':'¨',
\ 'v':'√',
\ 'w':'∑',
\ 'x':'≈',
\ 'y':'¥',
\ 'z':'Ω',
\ 'A':'Å',
\ 'B':'ı',
\ 'C':'Ç',
\ 'D':'∂',
\ 'E':'´',
\ 'F':'Ï',
\ 'G':'˝',
\ 'H':'Ó',
\ 'I':'ˆ',
\ 'J':'Ô',
\ 'K':'',
\ 'L':'Ò',
\ 'M':'Â',
\ 'N':'˜',
\ 'O':'Ø',
\ 'P':'∏',
\ 'Q':'Œ',
\ 'R':'‰',
\ 'S':'Í',
\ 'T':'ˇ',
\ 'U':'¨',
\ 'V':'◊',
\ 'W':'„',
\ 'X':'˛',
\ 'Y':'Á',
\ 'Z':'¸',
\ ',':'≤',
\ '.':'≥',
\ '-':'–',
\ '_':'—',
\ ';':'…',
\ ':':'Ú',
\ '/':'÷',
\ '?':'¿',
\ '0':'º',
\ '1':'¡',
\ '2':'™',
\ '3':'£',
\ '4':'¢',
\ '5':'∞',
\ '6':'§',
\ '7':'¶',
\ '8':'•',
\ '9':'ª'
\ }
for c in keys(a:letters_dict)
for m in ['nmap', 'xmap', 'smap', 'tmap']
exec m." ".a:letters_dict[c]." <M-".c.">"
endfor
endfor
endif
endfunc
call Alt_meta_map()
网友评论