[해결] vim에서 shift+커서키 상하 이동시 word-wrap 된 라인 안에서 한 줄씩 이동하기

raymundo의 이미지

안녕하세요, 제목이 좀 복잡하네요.

윈도우에서 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+오른쪽커서키로 한참 가는 식인 거죠.

감사합니다.

raymundo의 이미지

아까까진 구글링에 실패했는데, gk 를 검색어에 넣는 순간 딱 원하는 질문과 답이 있었네요 ^^

아래 링크대로 하니까 원하는대로 잘 됩니다.

http://stackoverflow.com/a/18684561

좋은 하루 되세요!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.