用altMapvim mac键

mjqavswn  于 2023-05-29  发布在  Mac
关注(0)|答案(2)|浏览(142)

我想做的事
我想在Mac键盘上Map<S-A-j><S-A-k>,以上下移动选定的行。所以,我Map:

" Move selected lines
xnoremap <S-A-j> :m'>+<CR>gv=gv
xnoremap <S-A-k> :m-2<CR>gv=gv

但是它不起作用,所以在插入模式下键入<S-A-j>键:

  • 对于<S-A-j>,它将写入Í
  • 对于<S-A-k>,它将写入Ë

所以我试着这样做:

xnoremap Í :m'>+<CR>gv=gv
xnoremap Ë :m-2<CR>gv=gv

它完美地工作。问题是,这是不容易阅读,它感觉像一个错误的权利?

我所尝试的

Map

"xnoremap <S-j> <A-j> :m'>+<CR>gv=gv
"xnoremap <S-k> <A-k> :m-2<CR>gv=gv

"xnoremap <S-J> <A-J> :m'>+<CR>gv=gv
"xnoremap <S-K> <A-K> :m-2<CR>gv=gv

"xnoremap <S-j><A-j> :m'>+<CR>gv=gv
"xnoremap <S-k><A-k> :m-2<CR>gv=gv

"xnoremap <S-j> <M-j> :m'>+<CR>gv=gv
"xnoremap <S-k> <M-k> :m-2<CR>gv=gv

Vim差异化

MacVim和Neovim

终端

我尝试在默认终端上运行。
我还使用pref > profile > keys -> option key=Esc+配置我的Iterm 2终端

我的环境

  • Apple M1 Pro
  • macOS Ventura 13.4
  • Iterm2
  • 日什
  • level:我经常在Android Studio上使用Ideavim,但并不真正了解Vim及其工作原理。

我的解决方案

重新Map您的AZERTY输入,以了解Vim您想要的内容

map Í <S-A-j>
map Ë <S-A-k>
xnoremap <S-A-j> :m'>+<CR>gv=gv
xnoremap <S-A-k> :m-2<CR>gv=gv

这将是有趣的重新Map所有的关键从AZERTY到QWERTY的特殊关键(与Alt或/和Ctrl)在一个不同的文件,然后源。我没有发现任何错误的时刻,在插入模式下,他承认以及正确的字符。

oaxa6hgo

oaxa6hgo1#

这主要是一个Mac的东西与国际键盘。
Vim不知道你同时按了CtrlOptj:它只看到Í,所以这就是您在Map中可以使用的所有内容。
此外,Í实际上是由Opt+j产生的。在这里,Ctrl修饰符什么也不做。
那你有什么选择

  • 使用组合键产生的实际字符:
xnoremap Í :m'>+<CR>gv=gv

优点:

  • 作品
  • 无需设置

缺点:

  • 不便携
  • 如果你不知道你的键盘布局,你就无法阅读
  • 设置您的终端模拟器使用“Option as meta”(Terminal.app)或“Esc+”(iTerm.app)并在Map中使用<Esc>
xnoremap <Esc>j :m'>+<CR>gv=gv

优点:

  • 比其他选择更易读
  • 稍微更便携

缺点:

  • 使插入特殊字符更加困难
  • 可能会中断一些琐碎的操作,如离开插入模式和向下移动光标
  • 仍然会隐藏你按下的键
  • 需要设置
lvmkulzt

lvmkulzt2#

您可以添加此文件(例如添加到USER文件夹).vimMacKeys

" keyboard remap for mac
if has('mac')                            
    source ~/.vimmackeys
endif

当然也可以直接在.vimrc文件中添加内容。请注意,这是从FR键盘完成的,只适用于字母键。所以请随时更新它为您的键盘类型。
适用于Vim & IdeaVim。

相关问题