vi
편집기 에서 삽입 모드로 화살표 키를 사용하려고하면 편집기에 다음 문자가 삽입됩니다.
- 에 ↓나는 B를 얻을 수
- 에 대한 ↑내가 얻을,
- 에 ←나는, D를 얻을 수
- 에 →나는 C를 얻을
이 문제를 해결하도록 도와주세요.
vi
편집기 에서 삽입 모드로 화살표 키를 사용하려고하면 편집기에 다음 문자가 삽입됩니다.
이 문제를 해결하도록 도와주세요.
답변:
.vimrc
홈 디렉토리에 파일 이없는 경우 다음을 사용하여 파일을 작성하십시오.
vim ~/.vimrc
파일 맨 위에 다음 줄을 추가하십시오.
set nocompatible
파일을 저장하면 문제가 해결됩니다. :)
vi
대신에 사용하면 트릭이 vim
있지만 ~/.exrc
파일 에서 동일한 구성을 수행해야 합니다.
vim 설치 -> 문제를 해결합니다.
sudo apt-get install vim
유튜브 또는 웹에는 일반적으로 많은 vim / vi 튜토리얼이 있습니다. 문제 는 여기를 참조하십시오
그런 다음 평소대로 파일을 계속 엽니 다 .
vi desired-file
을 사용 vi
하면을 클릭하면 텍스트 삽입i 명령이 활성화 됩니다.
이 명령을 사용하면 파일에 텍스트를 삽입 할 수 있습니다.
그리고 오른쪽을 클릭하면 :
이 명령을 비활성화 할 때까지
명령을 비활성화하려면 vi
:을 클릭 Esc
하면 화살표 키를 정상적으로 사용할 수 있습니다.
참고로, 다음은 몇 가지 vi
명령입니다.
이 소스에서 .
:x
Return quit vi , 원래 호출에서 이름이 지정된 파일에 수정 된 파일 쓰기
:wq
Return qu vi vi , 이 vi 호출에 대한 최신 변경 사항이 저장되지 않았어도 원래 호출에서 이름이 지정된 파일에 수정 된 파일 쓰기
:q
Return quit (또는 종료) vi
:q!
Return quit vi
↓ 이동 아래로 커서를 한 줄의
↓ 이동 커서를 한 줄 위로의
← 이동 커서를 한 문자 왼쪽으로
→ 이동 한 문자 오른쪽으로 커서를
u
방금 수행 한 모든 작업을 취소하십시오 . 방금 수행 한 작업을 간단하게
.
재실행
i
삽입 할 때까지, 커서 전에 텍스트를 Esc히트
I
삽입 될 때까지, 현재 행의 시작 부분에 텍스트 Esc히트하면
a
추가 될 때까지 커서 후 텍스트를 Esc히트
A
추가 현재 행의 끝 텍스트를 때까지 Esc공격
o
개방 과 현재 행 아래에 새 줄에 텍스트를 넣을 때까지 Esc공격
O
개방 및 Esc맞을 때까지 텍스트를 현재 줄 위에 새 줄에 넣 습니다.
r
대체 커서 (NO 아래에 하나의 문자를 Esc필요로)
cw
변경 될 때까지 커서 아래에있는 문자로 시작, 새 텍스트로 현재 단어를 Esc히트
x
삭제 커서에서 단일 문자를
Nx
삭제 커서가 문자로 시작, N 문자를
dw
삭제 커서 아래에 문자로 시작하는 단어
C
변경 때까지, 현재 행의 문자를 (대체) Esc히트
D
삭제 라인의 나머지 부분을 현재 커서 위치부터 시작하여,
dd
현재 줄 전체 삭제 현재 줄로 시작하여 N 줄을
Ndd
삭제 합니다. 예를 들면, 5dd 5 개 라인 삭제
yy
복사 (십중팔구 컷) 버퍼에 전류 선
Nyy
복사 버퍼에 현재 라인을 포함한 다음 N 라인 (십중팔구 컷)
p
붙여 텍스트 이후의 버퍼의 라인 (들) 현재 줄
0
(영) 이동 커서가 현재 라인 (커서와 함께 하나)의 시작
$
으로 이동 현재 라인의 끝으로 커서를
w
이동 다음 단어의 시작 부분으로 커서
b
이동 단어를 앞의 시작 부분으로 다시 커서
:0
Return또는 1G
이동 파일의 첫 번째 줄에 커서를
:n
Return또는 nG
이동 커서를 n 줄
:$
Return또는 커서를 파일의 마지막 줄로 G
이동
/string
검색 텍스트 문자열의 발생에 대한 순방향
?string
검색 텍스트 문자열의 발생에 대한 후진
n
이동 검색 문자열의 다음 발생에 대한
N
움직임 반대 방향으로 검색 문자열의 다음 발생까지
:help compatible
. 이 기본값은 Vi처럼 Vim을 사용하고 '호환되는'옵션에 대해 알고 싶지 않은 사람들을 위해 선택되었습니다. "
편집 모드에서 화살표를 눌렀을 때 문자 인쇄를 비활성화하려면 다음을 수행하십시오.
vi $HOME/.exrc
(존재하지 않는 경우 파일을 작성한 후) 행 set nocompatible
을 추가 하고 저장하십시오.
:version
로드 순서 에 대한 출력 참조 ( :h .exrc
또는 :h init
). 누군가 vi와 vim 모두에 적용하기를 원하거나 습관의 힘이 될 수 있다고 생각합니다.
vi 편집기에는 세 가지 모드가 있습니다.
파일을 열면 기본 모드에 있습니다. 지금 당신은, 텍스트의 특정 위치로 이동 단지 화살표 키를 사용하거나 사용하려는 경우 h, j, k, l키. 당신을 누르면하지 않은 경우에만 작동 것이 있습니다 i(또는 다른 입력 모드가 같은 명령을 입력 a, A, I).
'B'의 이유는 입력 모드의 화살표 키가 화살표 키로 작동하지 않기 때문에 Esc아무 때나 누르면 기본 모드로 이동합니다. 입력 모드 언론에 이동하는 경우 i나 a, 그리고 탐색 단지 눌러 i키를 사용 화살표 키 또는 h, j, k,를 l.
정확히 같은 문제가 있었지만 로컬 컴퓨터뿐만 아니라 citrix 수신기를 통해 Win7 VM의 sles 컴퓨터에서 퍼티를 통한 연결에서도 발생했습니다. 로컬 호스트와 원격 호스트 모두 Ubuntu를 다시 설치 한 후에도 동일한 문제가 발생했습니다.
그것을 알아 낸 후
$ localectl list-keymaps
Couldn't find any console keymaps.
이 이상한 VI 동작을 일으켜서 패키지 콘솔 데이터를 설치하여 문제를 해결했습니다!
sudo apt-get install console-data
노트 :
다른 게시물에는 좋은 정보가 있지만 이 동작이 발생한 이유 를 설명하는 게시물은 없습니다 . 많은 사람들이 앞으로 이것에 걸려 넘어 질 것입니다. 또한 이전 게시물이 도움이 되었기 때문에이 질문이 해결 된 것으로 표시 할 수 있습니까?
여기에 설명이 있습니다 :
Vi 는 오랫동안 유닉스 시스템에 기반을 둔 편집기입니다. 그것은 좋은 도구이지만 반복되어 왔으며 이제는 더 좋습니다. Vim 은 나중에 작성 되었으며 반복입니다. 사람들은 일반적으로 vi를 'vim-minimal'이라고하며 vim은 vi의 "향상된"버전입니다. 당신은 이것을 다음과 같이 생각할 수 있습니다 : vi는 핵심이고 vim은 그것에 확장합니다.
아마도 당신이 행동을 어떻게 발견했는지 :
이 문제를 발견하기 위해 " i "를 눌러 삽입 모드 로 들어간 다음 화살표 키를 사용하여 올바른 선과 편집 점을 탐색했습니다. 이것이 예기치 않은 문자 문제의 원인입니다.
솔루션 1 또는 2
1) vi를vi someFile
사용하는 동안 먼저 편집 점으로 이동 한 다음 삽입 모드로 들어갑니다.
2) 처음부터 vim 을 vim someFile
사용 하십시오.
매뉴얼 (man page)을 읽거나 도움을 위해 -h를 사용할만큼 스트레스를 줄 수 없습니다. 쉘의 패턴을 조정하면 매뉴얼 페이지가 가장 친한 친구가됩니다. 예 : man vi
또는man vim
Vim이 설치되어 있는지 확인하십시오 .
콘솔 창을 열고 다음을 실행하십시오.
dpkg --list | grep vim
이와 비슷한 것을 얻으면 vim을 사용하기 시작할 수 있습니다.
~ $ dpkg --list | grep vim
ii vim 2:7.4.052-1ubuntu3 amd64 Vi IMproved - enhanced vi editor
ii vim-common 2:7.4.052-1ubuntu3 amd64 Vi IMproved - Common files
ii vim-runtime 2:7.4.052-1ubuntu3 all Vi IMproved - Runtime files
ii vim-tiny 2:7.4.052-1ubuntu3 amd64 Vi IMproved - enhanced vi editor - compact version
명령 프롬프트가 아무 것도 반환하지 않으면 vim이 설치되지 않은 것입니다. 아래 예제를 사용하여 리포지토리를 업데이트 한 다음 vim을 설치하십시오.
sudo apt-get update
sudo apt-get install vim
인터넷에서 무언가를 고치는 방법을 검색 할 때만 vi 또는 vim을 사용하고 입력하는 것을 잊어 버린 경우에만 vim
미래에 그것을 고칠 수있는 한 가지 방법이 있습니다. 주의를 기울이십시오. 별명을 사용하여 vim에 대한 참조로 vi를 겹쳐 쓸 수 있으므로, 자주 입력하지 않아도 "oops"없이 vim을 얻을 수 있습니다. 순간. 나중에 언제든지 별칭을 삭제할 수 있습니다.
을 입력하십시오 vim .bashrc
. 빈 줄로만 ~
(또는 alias
그룹으로 묶인) 다른 줄로 이동 한 다음 i 키를 눌러- 삽입-모드로 들어갑니다. 별도의 줄에 다음을 입력합니다.
alias vi='vim'
를 누른 Esc
다음를 입력하십시오 :wq
. 이제 파일을 다시로드해야합니다. 유형 source .bashrc
편집 한 후 열리는 다른 쉘은 .bashrc 파일을 자동으로로드합니다.
주어진 모든 설명은 약간 기괴합니다. vi가 있지만 vim이 설치되어 있지 않습니다.
대안 확인 : /etc/alternatives/vi
→/usr/bin/vim.tiny
그래서 vi
입니다 vim.tiny
, 그리고 그것을 사용합니다 /etc/vim/vimrc.tiny
.
그리고 vimrc.tiny
다음 줄을 찾으십시오.
set compatible
이 파일에서 거의 유일한 것입니다. 에을 /etc/vim/vimrc
사용하고 nocompatible
있습니다.
따라서 vim을 설치하거나 vimrc.tiny
파일을 변경하거나 다음 ~/.vimrc
행을 포함하는 고유 한 파일을 작성하십시오 .
set nocompatible
~/.vimrc
및 설정 nocompatible
: askubuntu.com/a/353944/158442 또는 3. 시스템 파일 편집 제안 . 편집 제안 /etc/vim/vimrc.tiny
은 새로운 것이지만, 당신은 그들과 같은 것을 제안하면서 기괴한 답변이라고 부릅니다.
전통적인 vi 편집기는 화살표 키 (...)를 인식하지 못합니다. 두 가지 해결책이 있습니다.
일부 시스템에서는 nocompatible
옵션을 사용할 수 없거나 플러그인이 화살표 키 기능을 깨뜨린 경우 문제를 해결하지 못할 수 있습니다. 해결 방법은 다음과 같습니다.
.exrc
다음 줄을 포함 하도록 파일을 편집하십시오 .
map! ^[OA ^[ka
map! ^[OB ^[ja
map! ^[OC ^[la
map! ^[OD ^[ha
또는 문제가 정상 모드에만있는 경우 nmap
다음 a
과 같이로 변경 하고 다음을 건너 뛸 수 있습니다 .
nmap! ^[OA ^[k
등등.
다음은이를 생성하는 데 필요한 주요 조합입니다 (처음 하나만 표시).
map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka
편집 모드가 종료되고 원하는 방향으로 이동 한 다음 편집 모드로 다시 들어갑니다. 이것은 리터럴 <ESC> <O> <A> 등의 이스케이프 시퀀스를 읽는 Vi를 극복하기 위해 필요합니다.
VI의 경우 "~ / .exrc"파일을 생성 또는 편집하거나 VIM은 "~ / .vimrc"파일을 생성 또는 편집하거나 라인에 추가합니다.
set nocompatible
이 글을 쓰는 시점에서 두 번째로 많이 투표 한 항목에 대한 칭찬이있어 왜 참가가 허용되지 않았는지 궁금합니다. 다른 편집기를 설치할 수없는 호스트가 있기 때문입니다. 그럼에도 불구하고 vim은 때때로 같은 효과를 가지므로 상위 두 항목에서 유용한 정보가 많이 있습니다. 그러나 나는 이것이 100 % 정확한 시간 중 어느 것도 100 % 정확하지 않은 이유를 분명히하기를 희망합니다.