.vimrc에 아래 줄을 추가하여 매핑하려고했지만 작동하지 않습니다. .vimrc가 Vim에 의해로드되었는지 확인했습니다.
map <Alt-D> <C-D>
이 매핑에 오류가 있습니까?
답변
Mac 사용자에게 : ALT + hjkl 매핑을 위해 생성 된 실제 문자를 대신 사용합니다 (INSERT 모드에서 조합을 사용하여 어떤 문자를 사용하는지 확인). 예를 들어 키보드로 다음을 얻습니다.
<ALT+j> ==> ª
<ALT+k> ==> º
등등. 여기 StackOverflow 에서 솔루션을 찾았 습니다 .
나는 이것을 사용하여 .vimrc에서 이것을 사용하여 ALT + k \ j로 줄을 위아래로 이동했습니다.
nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==
inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi
vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv
여기에 설명 된대로 .
유용하길 바라며 Vim을 즐기세요 🙂
부 칙 BY Dylan_Larkin (2019) : 맥 “에이 작업을 수행하려면 메타 키로 사용할 옵션은 “켜져 있어야 OFF 에 터미널 -> 환경 설정 -> 키보드
답변
:help key-notation
서로 다른 키를 매핑하는 데 사용해야하는 형식을 설명합니다. alt의 경우 <A-
또는을 사용할 수 있습니다 <M-
. 그래서 당신의 매핑은
map <M-d> <C-d>
또한 매핑에 대해 오른쪽을 다시 평가하도록 명시 적으로 허용하지 않는 한 (예 nore
:)의 변형을 사용하는 것이 좋습니다 .:map
noremap
답변
더 이상 “가능”하다는 확신이 없습니다. 아래 업데이트를 읽으십시오.
예, 터미널 vim에서도 할 수 있지만 실제로 모든 답을 잡아낼 수는 없습니다 . 기본적으로 두 단계를 따라야합니다.
-
<M-d>
표기법이 있는지 확인하고 터미널에서 입력 한 내용을 정확히 매핑합니다 (^[
이스케이프 문자).$ cat ^[d $ " in your .vimrc execute "set <M-d>=\ed" " you have to use double quotes!
-
새로 “생성 된”조합에 무언가를 매핑합니다.
noremap <M-d> :echo "m-d works!"<cr>
작동 방식을 이해하면이 “속임수”를 다른 “이상한”조합으로 확장 할 수 있습니다. 예를 들어, I ‘m using termite, and vim does n’t know <S-F1>
, using cat I get ^[[1;2P
. 그런 다음 내 vimrc에서 다음을 수행합니다. execute "set <S-F1>=\e[1;2P"
, 그런 다음 무엇이든 매핑 할 수 있습니다.
참고 : 이유는 모르겠지만 일부 사람들 \<Esc>
은 \e
.
업데이트 (2016 년 2 월)
터미널이 실행하는 terminfo에 따라 아마도 … 대부분의 터미널에서 “alt + h”는 ^[h
는 “escape + h”에 . 따라서 키를 덮어 쓸 수 있습니다. 방금 (다시) 시도했지만 작동하는 것 같지만 버그가 많고 오류가 발생하기 쉬운 구현이라고 생각합니다.
그럼에도 불구하고 충분히 용감하게 여기 실험용 플러그인이 있습니다.
답변
Mac OSx의 Vim에서 Alt 키 매핑 :
터미널이 vim으로 보내는 키 코드를 확인하여 시작하십시오.
$ sed -n l
^[[1;9D
위의 예에서 명령을 실행하고를 눌렀습니다 Alt + Left.
는 ^[[1;9D
그래서 우리가 할 수있는, 사용자 정력로 전송되는 이스케이프 순서입니다 우리의 매핑.
map <Esc>[1;9D
답변
사용하다:
map <A-D> <C-D>
을 참조하십시오 :help key-notation
.
답변
터미널이 Alt-D를 “올바르게”전송하지 못할 수 있습니다. CV를 사용하여 실제로 Vim으로 전송되는 실제 이스케이프 시퀀스를 가져 와서 매핑을 만들 수 있습니다. 즉, .vimrc를 편집하고 다음 시퀀스 “CV Alt-D”를 입력하여 실제 파일을 바꾸면 vimrc에서 올바른 이스케이프 시퀀스를 갖게됩니다. 터미널이 vim에 아무것도 보내지 않으면 작동하지 않습니다.
답변
내 터미널은 ^[x
명령 을 생성 합니다 (예 : alt-x). Vim에서 작동하게 된 것은 vim.wikia.com의 작은 스크립트 였습니다 .
for i in range(97,122)
let c = nr2char(i)
exec "map \e".c." <M-".c.">"
exec "map! \e".c." <M-".c.">"
endfor
모든 alt 키 매핑을 수정하려면 .vimrc에 추가하십시오.
