我想做的事
我想在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)在一个不同的文件,然后源。我没有发现任何错误的时刻,在插入模式下,他承认以及正确的字符。
2条答案
按热度按时间oaxa6hgo1#
这主要是一个Mac的东西与国际键盘。
Vim不知道你同时按了
Ctrl
、Opt
和j
:它只看到Í
,所以这就是您在Map中可以使用的所有内容。此外,
Í
实际上是由Opt+j
产生的。在这里,Ctrl
修饰符什么也不做。那你有什么选择
优点:
缺点:
<Esc>
:优点:
缺点:
lvmkulzt2#
您可以添加此文件(例如添加到USER文件夹).vimMacKeys
当然也可以直接在
.vimrc
文件中添加内容。请注意,这是从FR键盘完成的,只适用于字母键。所以请随时更新它为您的键盘类型。适用于Vim & IdeaVim。