[해결] vim :e로 공백있는 파일명 불러오기 되나요?

u235의 이미지

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에 넣어 결국 자체해결 되네요.

u235의 이미지

공백이 있으면 자동으로 따옴포를 추가해서 그런것 같습니다.
따옴표를 제거해주면 공백이 있더라도 되는데

혹시 :e명령에서 따옴표를 무시하게 하는 방법은 없나요?

James Gostling

세벌의 이미지

백슬래시 쓴 다음에 스페이스 해 보세요.
예를 들어 파일이름이 " abc" 라면

:e \ abc

해 보셔요.
u235의 이미지

역시 안됩니다.
파일이 불려지는 대신 따옴표가 포함된 새 파일을 얼게되네요.
vi는 따옴표 자체를 파일명의 일부로 인식하는것 같습니다.

실은 이전 버전부터 안되던거라 자체로 수정될 가능성은 없어보이고
대응 가능한 플러그인은 없을까요?

James Gostling

세벌의 이미지

데비안 9.5 에서 제 방법이 잘 되는 것 확인했습니다.

그런데 :e 명령으로는 경로에 공백이 있으면 파일이 없습니다.
라며 불러오기가 안되네요.
이 현상은 아마 리눅스도 마찬가지 같은데

라고 하신 걸 보니 엠에스윈도에서 vi 쓰는 거군요.

저는 엠에스윈도에서는 vi 대신 Notepad++ 를 즐겨씁니다. https://notepad-plus-plus.org/

u235의 이미지

vi가 너무편해 윈도에서도 즐겨 사용합니다 ㅎ..
POSIX는 아마도 공백이 포함된 매개변수를 전달할때도
알아서 따옴표를 자동추가하는 그런일은 절대 안할것 같습니다.

James Gostling

shint의 이미지

윈도우에서는 공백을 쌍따옴표(더블커테이션 마크)'로 묶어서 사용합니다.
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

u235의 이미지

:ls 로 확인해 보니
윈도에서는 공백이 있으면 기본으로 " " 를 추가해서 "aaa bbb.txt" 로 보네주고
vim에서 다시 추가하여 "" "" 처럼돼서 그런것 같습니다.

결론은 vim 문제인데 플러그인을 써서 해결 방법이 있을것 같은데요.
예를들어 :e 명령을 오버라이딩 한다든가 해서요....

James Gostling

shint의 이미지

어떤 방식인지는 적용해보거나 설명이 필요할겁니다. ㅇ_ㅇ;;

//
PHP 나 Javascript 등 에서는 ''를 사용하기도 합니다.

'"c:\test test.txt"'

//
\"로 "를 구분하는 경우

"\"c:\test test.txt\""

//
\\ 이 2개여야 하는 경우.

"c:\\test test.txt"

//
절대 경로 (전체 경로)를 사용해야 하는 경우.

c:\abc\test test.txt

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.