[해결] vim에서 shift+커서키 상하 이동시 word-wrap 된 라인 안에서 한 줄씩 이동하기
안녕하세요, 제목이 좀 복잡하네요.
윈도우에서 gvim으로 긴 마크다운 파일을 편집하고 있는데, 영 불편한 부분이 있어서 질문합니다.
예를 들어 아래와 같은 텍스트가 있습니다. 숫자는 행번호이고, 세 줄짜리인데 각 줄이 길어서 word wrap 되어 있는 상태입니다.
1: 긴 줄----------A-------------- ------------------------------ ------------------------------ 2: 긴 줄----------B-------------- ---------------C-------------- ---------------D-------------- 3: 긴 줄----------E-------------- ------------------------------ ------------------------------
예를 들어 커서가 C에 있는데, k 를 누르면 커서는 B로 가는 게 아니라 윗줄로 이동하여 A까지 갑니다: 이건 gk 라고 입력하면 되는 걸 알아내어 해결했습니다.
그런데 커서키로 위로 가기를 누르면 역시 A까지 가버립니다. 이건 뒤져보니 키 매핑을 하면 되는 것 같습니다.
:nnoremap <Up> gk
그런데 입력 모드에서는 또 여전하네요. 그래서 inoremap 을 써서 똑같이 매핑하니까, 입력모드라서 "gk"라는 문자열이 입력되어 버립니다. 또 뒤져보니까 Ctrl-O 를 누르는 걸 추가해주면 되나봅니다.
:inoremap <Up> <C-o>gk
여기까지는 해결됐는데요, 저는 Shift+Up 또는 Shift+Down 을 눌러서 블록 지정을 하며 이동할 때도 마찬가지로 눈에 보이는 한 줄 위로만 이동하게 하고 싶습니다.
뒤져보니 select 모드에서는 snoremap 을 쓰면 되는 것 같아서
:nnoremap <S-Up> gk "한줄만 이동하긴 하는데, 블록 지정이 안 됩니다 :snoremap <Up> gk "효과없었습니다
여기 쓴 거 말고도 몇 개 더 해봤는데 제가 지금 졸려서 잘 재현을 못하겠네요ㅠ
이왕이면 노말 모드와 입력 모드 양쪽에서 다 되었으면 좋겠습니다. 쉬프트+커서키로 블록지정하고 del 눌러 지우고 그 자리를 편집하는 과정을 계속 반복하는데, 이렇게 위아래로 눈에 보이는 한 줄 단위로 이동을 못하고 개행 문자 기준으로 이동해버리는 바람에, 매번 좌우 키를 한참 눌러서 블록지정하고 있습니다.
예를 들어 커서가 B에 있는데, 저는 B--....--C 까지를 블록 지정하고 잘라내고 싶은데, Shift 누른 채로 B에서 C로 커서를 내리지 못해서, Shift+오른쪽커서키로 한참 가는 식인 거죠.
감사합니다.
아까까진 구글링에 실패했는데, gk 를 검색어에 넣는
아까까진 구글링에 실패했는데, gk 를 검색어에 넣는 순간 딱 원하는 질문과 답이 있었네요 ^^
아래 링크대로 하니까 원하는대로 잘 됩니다.
http://stackoverflow.com/a/18684561
좋은 하루 되세요!
댓글 달기