Post

vi manual

목차


sudo 저장

sudo 명령이 가능한 유저의 경우
1
:w !sudo tee "%" > /dev/null

w!! 시 위 명령어가 실행되도록 함수 설정

1
ca w!! w !sudo tee "%" > /dev/null
sudo 명령이 불가능한 유저의 경우

/tmp/tfile 에 저장 후 루트 권한으로 파일 복사

1
:w !cat > /tmp/tfile

vi hex editor

1
:%!xxd

롤백하는 법

1
:%!xxd -r

vi 줄바꿈 된 라인 이동

set wrap 된 긴 줄을 이동할 때 줄바꿈 된 라인이 있을 경우
아래 예시를 기준으로 하면 asdfgh… 라인에서 j 키를 누르면 dfghas… 라인으로 이동하지 않고 zxcvbn 라인으로 이동한다.

이때 gj 또는 gk 키를 누르면 줄바꿈 된 라인으로 이동한다.

1
2
3
4
qwerty
asdfghasdfghasdfghasdfghasdfghasdfghasdfghasdfghasdfghasdfghasdfghasdfghasdfghas(줄바꿈)
dfghasdfghasdfghasdfghasdfghasdfghasdfghasdfghasdfghasdfgh
zxcvbn

^M 에러

주로 윈도우에서 작성된 파일을 리눅스에서 vi로 열었을 때 발생한다.

1
2
# ./test.sh
zsh: ./test.sh: bad interpreter: /bin/bash^M: no such file or directory

에러가 발생하여 vi로 파일을 열면 ^M 문자가 없다.

^M 문자는 vi -b <파일명> 명령을 통해 확인할 수 있다.

^M 문자는 Ctrl + V 키를 누른 뒤 M 키를 누르면 입력할 수 있다.

아래 명령어를 통해 ^M 문자를 모두 제거할 수 있다.
아래 명령어를 그대로 복사하면 텍스트 ^M 문자가 복사되므로 복사하지 말고 Ctrl + V 키를 누른 뒤 M 키를 눌러서 입력해야 한다.

1
%s/^M//g

이후 저장 & 종료 후 ./test.sh 명령을 실행하면 정상적으로 실행된다.

1
2
# ./test.sh
test
This post is licensed under CC BY 4.0 by the author.