[해결] vim :e로 공백있는 파일명 불러오기 되나요?
vi 에 맛들여 윈도에서도 메인으로 사용합니다.
vs code, atom, notepad+ 등이 있으나
긴 문서가 아니면 가급적 vi만 씁니다.
처음 시작은 주로 파워셀 창에 vi를 띄워놓고 마우스로 끌어오며
중간에는 :e [파일명] 해서 불러옵니다.
그런데 :e 명령으로는 경로에 공백이 있으면 파일이 없습니다. 라며 불러오기가 안되네요.
이 현상은 아마 리눅스도 마찬가지 같은데
해결 방법은 없나요?
윈도우 버전의 다른 단점으로 :set mouse=a 해도
여전히 마우스가 안먹는데 이것의 해결 방법은 확실히 없는것 같습니다.
[함수 작성으로 해결]
함수를 만들어 해결됐습니다.
먼저 Tedit란 다음 함수를 만들었으며
function Tedit(aaa)
let fo=a:aaa
if fo=="" || fo=="." | let fo=getcwd() | endif
if fo[0:0]=='"'| let fo=fo[1:-1] | endif
if fo[-1:-1]=='"' | let fo=fo[0:-2] | endif
let fn=fnamemodify(expand( fo),":t")
let fd=fnamemodify(expand( fo),":p:h")
if filereadable(expand(fo))
execute "tabedit " . fo
elseif isdirectory(fo)
execute "Explore ". fd
elseif isdirectory(fd)
let resp=confirm(fd ." 의 경로에 ".fn." 파일을 새로만들까요?", "&Yes\n&No")
if resp == 1
execute "tabedit " . fo
else
execute "Explore ". fd
endif
else
echohl ErrorMsg
echo "OOPS ".fd." 경로가 존재하지 않습니다"
echohl None
endif
endfunction
그리고 command 명령으로 호출하도록 했습니다,
command -nargs=* -complete=file_in_path E call Tedit('
대문자로 :E 해야하지만 위 함수와 command 명령 한줄을 vimrc에 넣어 결국 자체해결 되네요.
안되는 이유가
공백이 있으면 자동으로 따옴포를 추가해서 그런것 같습니다.
따옴표를 제거해주면 공백이 있더라도 되는데
혹시 :e명령에서 따옴표를 무시하게 하는 방법은 없나요?
James Gostling
백슬래시 쓴 다음에 스페이스 해 보세요.
백슬래시 쓴 다음에 스페이스 해 보세요.
예를 들어 파일이름이 " abc" 라면
해 보셔요.
세벌 https://sebuls.blogspot.kr/
네 그렇게 해보았으나
역시 안됩니다.
파일이 불려지는 대신 따옴표가 포함된 새 파일을 얼게되네요.
vi는 따옴표 자체를 파일명의 일부로 인식하는것 같습니다.
실은 이전 버전부터 안되던거라 자체로 수정될 가능성은 없어보이고
대응 가능한 플러그인은 없을까요?
James Gostling
데비안 9.5 에서 제 방법이 잘 되는 것
데비안 9.5 에서 제 방법이 잘 되는 것 확인했습니다.
라고 하신 걸 보니 엠에스윈도에서 vi 쓰는 거군요.
저는 엠에스윈도에서는 vi 대신 Notepad++ 를 즐겨씁니다. https://notepad-plus-plus.org/
세벌 https://sebuls.blogspot.kr/
네 저도 데비안과 프비를 주로 사용했는데요.
vi가 너무편해 윈도에서도 즐겨 사용합니다 ㅎ..
POSIX는 아마도 공백이 포함된 매개변수를 전달할때도
알아서 따옴표를 자동추가하는 그런일은 절대 안할것 같습니다.
James Gostling
참고해보세요.
윈도우에서는 공백을 쌍따옴표(더블커테이션 마크)'로 묶어서 사용합니다.
e: "c:\test test test.txt"
//
기타
Replace Tab with Spaces in Vim
https://stackoverflow.com/questions/426963/replace-tab-with-spaces-in-vim
vim 사용하기
https://gist.github.com/onmoving/4544537
http://vim.wikia.com/wiki/Remove_unwanted_spaces
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
결론은 해결할수 없다는건가요?
:ls 로 확인해 보니
윈도에서는 공백이 있으면 기본으로 " " 를 추가해서 "aaa bbb.txt" 로 보네주고
vim에서 다시 추가하여 "" "" 처럼돼서 그런것 같습니다.
결론은 vim 문제인데 플러그인을 써서 해결 방법이 있을것 같은데요.
예를들어 :e 명령을 오버라이딩 한다든가 해서요....
James Gostling
참고해보세요.
어떤 방식인지는 적용해보거나 설명이 필요할겁니다. ㅇ_ㅇ;;
//
PHP 나 Javascript 등 에서는 ''를 사용하기도 합니다.
//
\"로 "를 구분하는 경우
//
\\ 이 2개여야 하는 경우.
//
절대 경로 (전체 경로)를 사용해야 하는 경우.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기