갤 살리기 운동 일환으로 뭐라도 연재 시작해봄
순정 vim부터 (9.0 기준) neovim까지 (nightly 기준) 자잘한 팁같은거 조금씩 뿌릴 생각임

h,j,k,l 같은 vim motion이나 기본적인 config 작성법은 안다는 전제 하에 적을거임
강좌가 아니라 어디까지나 팁. 검색하면 수두룩하게 나오는 누구나 다 아는 정보는 피해서,
최대한 듣보잡 정보인데 알아두면 쓸만한것들만 모아보려 하고 있음
내장 help 문서가 이미 잘 작성되어 있는 vim 특성상 글이 좀 짧은건 양해바람

잘못된 정보에 대한 피드백은 언제나 환영

———

:h ‘virtualedit’

텍스트가 존재하지 않는 부분에도 커서를 둘 수 있는 옵션임
줄의 끝에서 더 뒤로 간다던가,
화면 아무대나 잡고 입력하면 앞의 공백은 자동으로 채워진다던가,
하는 기능

“이딴게 왜 필요함???“ 싶을 수 있는데,
help페이지에선 table 같은거 편집할 때 유용하다 나오고,
내가 본 가장 융요하게 활용하는 케이스는 neovim에서 마우스 커서로 조작 가능한 그림판 플러그인 만드는 사람이 있었는데 걔가 쓰더라, 그거 하나만을 위해 neovim core까지 건드렸던걸로 기억함
일반적으로 유용할만한 케이스는 이걸 onemore로 하는거임. 자세한건 후술함

들어갈 수 있는 옵션은:

block : visual block mode에서만 적용 (EOL 무시하고 무조건 완전한 사각형으로 선택됨)
insert : insert mode에서만 적용 (EOL에서 방향키로 옆으로 이동해도 움직여짐)
all : 모든 모드에 적용
onemore : 다른 효과 없이 그냥 줄의 진짜 맨 끝으로 이동할 수 있게 된다. (후술)
none : virtualedit 옵션을 window-local하게 끄는 옵션. neovim에 window-local 옵션이 있는걸로 아는데, 이게 왜 따로 필요한건진 나도 모르겠음

여기서 onemore 옵션은 visual mode와 normal mode에서 커서 가동 범위를 동일하게 만들어주는 옵션임

78eb857eb6f06af723e883e1409c706bc79d87664807b88f230ae11e68f3a233ad13b80c687186b1fb771e979299ec4aa0ec4c

vscode, intellij 등과 달리, vim은 modal editor라 그런지 각 줄은 무조건 \r, \n, \r\n 등의 EOL 문자를 포함하고 있어야함
(그래서 따로 건드린게 없는데도 vscode에서 작성했던 파일을 vim에서 열면 갑자기 파일이 수정되어있는걸 발견할 수 있음)

하지만 Normal mode에서는 끝에 EOL 문자가 하나 더 있음에도 커서를 이동할 수 없다.
$를 하든 g$를 하든 llllllll를 누르든 마찬가지임

7de88504c1f16ef323ecf090449c706f71a0a7d048cb4ace4d4045d3c6175e212d876488cca3cc008fea4dcb0e480fbe15ed77

이와 달리 Visual, Visual-Line, Visual-Block, 혹은 Select 모드에서는 EOL문자까지 포함해서 선택됨

onemore는 이 차이를 없애주는 옵션임

7b9b8471b3821ef223e6f597359c706a356465fc223a8b2cc5acdeddde7f51ab29bb8739e507b933ed8d85c9758841853e0f72

onemore 옵션을 켠 상태에서도 $는 여전히 EOL 전 문자로 이동하지만,

7fe98073bc8461ff23e9f5e5429c706f5c4c1ba9ceac3bce821f191caa2283bd887d2452acd05768f88247cde6cbea15f24bab

g$나 l를 사용하면 EOL문자까지 이동 가능한걸 볼 수 있다.

- dc official App