Ctrl + A와 Ctrl + Shift + A를 다르게 매핑하는 방법은 무엇입니까?
터미널에서는 Ctrl+ A와 Ctrl+ Shift+ A를 구분할 수 없습니다. 둘 다 동일한 키 코드를 방출하기 때문에 Vim이 할 수없는 이유를 알 수 있습니다. 그러나 X 애플리케이션 인 gVim은 Ctrl+ A와 Ctrl+ Shift+를 구별 할 수 있습니다 A. 이 두 가지를 다르게 매핑 할 수있는 방법이 있습니까?
우선 다음과 같은 작업을하고 싶습니다. "클립 보드에서 붙여 넣기"가 Gnome 터미널처럼 작동하도록하고 Ctrl+ V를 시각적 모드로 유지 합니다.
:nmap <C-S-V> "+gP
Gvim은 vim이 할 수 없기 때문에하지 않습니다 (일반적인 상황에서). 미안하지만 그게 바로 그거야.
하나...
일부 터미널 (예 : xterm 및 iterm2)은 임의의 키 조합에 대해 임의의 이스케이프 시퀀스를 보내도록 구성 할 수 있습니다.
예를 들어,에 다음을 추가 .Xresources
xterm을 전송하기 <Esc>[65;5u
위해 CtrlShiftA. 그런 다음 Vim에서 <C-S-a>
. (65는 shift-a에 대한 십진 유니 코드 값이고 5는 ctrl 수정 자에 대한 비트입니다.이 경우 u는 "유니 코드"를 나타냅니다.)
! .Xresources
XTerm*vt100.translations: #override Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u")
iTerm 및 [u] rxvt도이를 수행하도록 구성 할 수 있습니다 (예는 제공되지 않음).
추가 정보 : http://www.leonerd.org.uk/hacks/fixterms/
이미 지적했듯이와 <C-S-A>
다르게 매핑 할 수있는 방법은 없습니다 <C-A>
.
그러나 autokey
(Linux 및 Windows 용) 또는 autohotkey
( Windows 용) 과 같은 도구를 사용하여 <C-S-A>
특정 응용 프로그램에 대해 다른 키 입력을 보내도록 다시 매핑 할 수 있습니다 .
예를 들어 내 시스템에서 다음 설정이 있습니다 autokey
.
$ cat ~/.config/autokey/data/gnome-terminal/ctrlshifta-gnome-terminal.py
#ctrl+shift+a sends '<S-F1>a'
keyboard.send_keys("<shift>+<f1>a") # Note that `f` in `f1` needs to be in lower case.
다음 속성을 할당합니다.
- 키보드 단축키
ctrl+shift+a
- 창 클래스 :
gnome-terminal-server.Gnome-terminal
그런 다음 원하는대로 ~/.vimrc
매핑을 만들 수 있습니다 <S-F1>a
.
메모:
- 나는
<S-F1>
탐지를 위해 일종의 리더 키로 사용 했습니다<C-S>
. 내 단말기가 수락하지 않았습니다 때문이었다<F13>
-<F37>
등 키. 응용 프로그램에서 지원하는 경우gvim
해당 키를 사용하는 것이 좋습니다. - 나는 주로
vim
에서gnome-terminal
. 그래서window class = gnome-terminal-server.Gnome-terminal
필터로 사용 했습니다.gvim
원하는 경우 사용하도록 수정하십시오 .autokey
클래스 / 제목과 같은 다른 창의 속성을 캡처하기위한 버튼을 지원합니다.
기존 CV 기능을 잃어 버리는 것이 귀찮다면 대신 CQ를 사용할 수 있습니다. : help CTRL-V-alternative를 참조하십시오.
언급했듯이 동일한 키 코드를 얻습니다. 따라서 이들을 구별하는 유일한 방법은 Shift이벤트 처리 기능에서 키 의 상태를 확인하는 것입니다 . 물론 키 누르기와 처리 사이에 0.5 초 이상의 지연이 있으면 일부 히트를 놓칠 수 있습니다.
키보드 입력이 내부적으로 처리되는 방식으로 인해 안타깝게도 오늘날 일반적으로 GVIM에서도 가능하지 않습니다. Ctrl+ 비 알파벳 과 같은 일부 키 조합 은 매핑 할 수 없으며 Ctrl+ 문자 대 Ctrl+ Shift+ 문자는 구분할 수 없습니다. (단말기가 고유 한 termcap 코드를 보내지 않는 한 대부분은 그렇지 않습니다.) 삽입 또는 명령 줄 모드에서 키 조합을 입력 해보십시오. 아무 일도 일어나지 않거나 삽입되면 해당 키 조합을 사용할 수 없습니다. 이것은 또한 <Tab>
/ <C-I>
, <CR>
/ <C-M>
/ <Esc>
/ <C-[>
등에 적용됩니다 . (단지 <BS>
/ 는 예외입니다 <C-H>
.) 이것은 알려진 문제점이며 vim_dev 및 #vim IRC 채널에 대한 다양한 논의의 주제입니다.
일부 사람들 (이전 Paul LeoNerd Evans)은 (이를 지원하는 터미널의 콘솔 Vim에서도)이를 수정하고 싶어하며 다양한 제안, cp. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8
그러나 현재로서는 패치 나 자원 봉사자가 아직 나오지 않았지만 많은 사람들이 향후 Vim 릴리스에서이 기능을 사용하고 싶다고 표현했습니다.
NeoVim은 이제 터미널과 GUI 클라이언트 모두에이 기능을 제공합니다. : h nvim-features-new를 참조하십시오 .
참고 URL : https://stackoverflow.com/questions/1506764/how-to-map-ctrla-and-ctrlshifta-differently
'Program Tip' 카테고리의 다른 글
Visual Studio 2010을 더 빠르게 만들기위한 성능 팁? (0) | 2020.10.17 |
---|---|
window.onbeforeunload가 iPad에서 작동하지 않습니까? (0) | 2020.10.17 |
스칼라의 믹스 인 vs 컴포지션 (0) | 2020.10.17 |
memtrack 모듈을로드 할 수 없습니다. Logcat 오류 (0) | 2020.10.17 |
C ++ 11의 문자열 리터럴에 대한 유니 코드 인코딩 (0) | 2020.10.17 |