문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 vi (문단 편집) == 이용 == 진입장벽이 높고 복잡한 모드라는 직관성을 다소 희생하는 수단을 취하는 대신 '''텍스트를 조작'''하는 기능에 치중하여 다른 편집기에 비하여 매우 간단한 키 입력으로 텍스트를 조작하는 것이 가능해졌다. 게다가 당시 컴퓨터 화면에는 지금의 모니터처럼 다양하고 직관적인 그래픽적 표시를 할 수가 없었으므로 화면에 일일이 시각적으로 표시해 주지 않을 바에야 최대한 짧고 간결한 명령 조작 체계를 도입하는 것이 합리적이었다. 과거 편집기의 주된 사용 용도는 [[C언어|C]] 프로그래밍이었다. 프로그래밍의 특성 상 한 번에 타이핑하기보다는 조금씩 변경, 추가를 하는 일이 많다. 이렇다 보니 당시에는 '라인 편집기' 개념이 중요했다. 라인 편집기는 '''편집할 줄과 편집 방식을 지정-> 방식에 따라 편집->다시 돌아와서 다음 번 편집할 줄과 편집 방식을 지정''' 의 순환을 거치며 작동한다. vi는 라인 편집기 개념에 기반하고 있어 [[GUI]]에 익숙한 사용자들에게는 접하기 힘들고 생소하다. 초보자들이 vi를 처음 보고 가장 당황하는 것은 실행을 시켰는데 '''키보드가 먹히질 않는다'''는 점이다. 당황해서 막 누르다 보면 또 '''어느 순간 입력이 되기 시작'''한다. vi에는 일반 모드, 입력 모드, 명령 모드의 세 가지 모드가 존재하기 때문인데, 그걸 모르고 초심자가 vi로 뭔가 하려고 손댔다가 입력은 안 되지, 삭제도 안 되지, 갑자기 모드가 바뀌어서 입력이 되지, Esc 눌러도 종료는 안 되지... 이런 상황 때문에 봉변을 당하는 경우가 많다. vi의 해괴한(?) 기능 키 선정 역시 당시의 키보드 구조를 보면 납득이 가는데, 아래의 그림을 보면 알 수 있겠지만 많이 쓰는 Esc, Ctrl 키는 지금과 달리 아주 가까운 곳에 있고 방향키는 애초에 키보드에 없어서 다른 키에 매핑하고 있는 것을 알 수 있다. 물론 지금 와서 완전한 구형 키배치를 쓰는 키보드는 [[해피 해킹 키보드|해피해킹]]과 같은 덕후용(?) 특수 생산품을 제외하고는 거의 없긴 하지만, 사람 버릇이 된 단축키라는 것이 어디 그리 쉽게 옮겨가던가. (FPS에서 마우스와 키보드를 동시에 쓰기 위해 방향을 WASD로 옮겨서 쓰는 것이 관습인 것처럼) 커서를 이동하는 것만 봐도 위, 아래, 왼쪽, 오른쪽으로 이동하는 키는 각각 K, J, H, L이고, 입력 모드에서는 Alt+(K, J, H, L)이다. 처음에는 생소하겠지만 익숙해지면 손가락이 화살표 쪽으로 갈 일이 없다는 점에서 꽤나 높은 편의성을 가져다 준다.[* 쿼티 키보드 상에서 나타나는 HJKL 순서로 놓으면 ←↓↑→이 되는데 이는 [[댄스 댄스 레볼루션]]의 화살표 순서와 일치한다. 단순한 우연인지 아니면 DDR 제작진들이 HJKL 순서를 참고했는지는 알려지지 않았다.] Emacs와 비교하면, 명령 입력을 위해서는 거의 항상 양손이 키보드 위에 있어야 하는 Emacs에 비해 vi에서의 편집은 한 손만으로도 웬만한 것들은 가능하다. 그리고 한 번 여기에 맛들이면 항시 양손을 사용해야 하거나 마우스를 건드려야 하는 편집기에는 기능이고 뭐고를 떠나서 자연스레 거부반응이 늘어나게 된다. 초심자들에게는 리눅스에서는 [[nano]]를, [[FreeBSD]]에서는 ee를 권한다. 혹은 리눅스 이용자라면 대부분 배포판에 vimtutor라는 튜토리얼이 깔려 있으니 이를 사용해서 하라는 대로 해보면 어느 정도 중요한 기능들을 익힐 수 있다. 심지어 vi의 키맵을 bash에서도 쓸 수 있다. `set -o vi`라고 치면 Esc 키로 일반 모드로 들어가는 등 vi에서 쓰던 키맵을 거의 그대로 쓸 수 있다.[* 다만 이런 세팅 없이도 Emacs의 키맵은 처음부터 쓸 수 있긴 하다.] 지금 편집 모드인지 일반 모드인지 바로 알기 어렵고 선택 기능이 먹히지 않는다는 (즉 비주얼 모드가 없다는) 불편함이 있긴 하지만[* 선택을 쓴다고 v를 누르면 (혹은 입력 모드에서 Ctrl+X-Ctrl+E를 누르면) 소위 커맨드 라인 편집 모드(command line editing mode)라고 해서 미리 지정된 편집기에서 쓰고 있던 명령 라인을 수정할 수 있다. 명령어가 너무 길어지면 나름 쓸만한 물건이다. 다만 기본으로 지정된 편집기가 쓰던 것과 다를 수 있다. 예를 들어 우분투에선 무려 nano가 기본으로 지정되어 있다. $VISUAL이나 $EDITOR를 바꿔서 원하는 걸로 바꾸자. 다만 zsh에서는 안 먹히는 듯.] 엄청 긴 스크립트 짜는 것도 아닌 한 줄 짜리 bash 작업을 위한 것이라고 생각하면 오히려 차고 넘치는 기능일 것이다. (심지어 yank(복사)-put도 먹힌다!) zsh에서도 같은 방식으로 사용 가능하다. vim 8.0부터는 터미널 에뮬레이팅도 지원한다. :term이라고 입력해 보자. Ctrl+W를 위시로 한 다양한 단축키들을 이용하면 vim 내부의 터미널 내용을 편리하게 스크롤 할 수 있고 복사해서 가져 올 수도 있으며 반대로 vim 버퍼에 있던 내용을 vim 터미널 에뮬레이터에 Ctrl+V 하는 것마냥 붙여넣는 것도 가능하다. 중증 vi 중독자는 Windows에서도 편하다고 vi를 깔아서 쓴다. 실제로 Windows용이 따로 있다. 실행하면 유닉스나 리눅스에서와 똑같이 윈도우 창에 텍스트 화면만 달랑 나온다. 당연히 현재 Windows는 GUI로 쓰는 것이 일반화되어 있기 때문에, GUI 환경에서 쓰기 쉬운 버전도 있다. 리눅스에서 작성된 텍스트를 읽는데 유용하게 쓸 수 있다. 윈도우에선 일반 편집기와 같은 모드가 기본이나 설정파일을 수정하면 오리지널 모드로 변경 가능하다. 다만 상당수의 vi 사용은 리눅스에서 이루어지기 때문에, vi를 가르친다면 아예 [[https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html|PuTTY]] 같은 것을 깔아 리눅스 서버를 연결하고, 그 서버의 vi를 열어 가르치는 경우가 대부분이다. 이 경우 흔히 필수 설정을 좀 만져주지만, 거기에 [[자동 완성]] 같은 건 없다. 다른 편집기와 너무나도 다른 부분들[* 지 혼자 들여쓰기의 간격이 2배(8칸)라든가]을 만져주는 정도니 크게 기대는 하지 말자.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기