보자 나는이 gvim
존중, 실행하고 나는 파일을 열고 원하는 autocmd
을 (를 배제한다--remote-tab
).
이제 나는 (기본적으로 약간의 조정으로) 할 수 있다는 것을 알고 있습니다.
gvim --remote-send ":tabe my_file<CR>"
작동합니다. 그러나 파일에 공백이나 이상한 문자가 있으면 다음을 수행해야합니다.
gvim --remote-send ":tabe my\\ file<CR>"
(더블 \\
은 쉘 중 하나가 먹기 때문에 수동으로 입력하는 것과 같습니다.
`:tabe my\ file`
에서 vim
) 그것은 작동합니다. 이제 쉘에서 문자열을 만드는 방법을 찾을 수 있지만 ": tabe"명령에서 문자열을 "전역 적으로 인용"할 수 있기를 바랍니다.
gvim --remote-send ":tabe 'my file'<CR>"
또는
gvim --remote-send ":tabe \"my file\"<CR>"
--- vim 명령 줄에 직접 쓰는 것과 같습니다 :tabe "my file"
. 작동하지 않는 것 같습니다. 쉘을 사용하여 문자열의 모든 공간을 명시 적으로 인용 할 수 있습니다.
# <ESC> because the gvim instance can be in a mode different from normal
# the double CR: do not ask.
# the argument MUST be a full path
file="$(readlink -f "$@")"
fileq="$(echo "$file" | awk '{gsub(/ /,"\\\ ")}1')" # quote spaces FIXME add other chars
exec gvim 2>/dev/null --servername $desktop --remote-send "<ESC>:tabe $fileq <CR><CR>"
그러나 공백과 탭과 같은 다른 특수 문자는 사용할 수 "
없으며 (줄 바꿈도 없지만 파일 이름에 줄 바꿈이 있으면 자격이 있습니다!).
질문 :
특정 쉘에서 독립적으로 :-) 다음에 다룰 것입니다. "strange"문자를 하나씩 인용하지 않고 파일 이름을 전역 적으로 인용하기 위해 vim 줄에 직접 입력 하는 방법이 tabe:
있습니까?
흠 ...
—
Rmano 2019
gvim --remote-send ":tabe 'f s.txt'<CR>"
나에게 도움이되지 않았고 :tabe 'f s.txt'
vim에 글을 쓰지 못했습니다 E77: Too many files names
.
gvim --servername $desktop --remote-send "<ESC>:tabe ${file// /\\ }<CR>"
더 간단 하지 않습니까?
이
—
EvergreenTree
shellescape
기능이 도움이 되겠습니까?
있다는 사실을 양지해야합니다
—
tommcdo
:edit
(및 그 변종)가 인용 파일 이름을 허용하지 않습니다. 모든 특수 문자는 개별적으로 이스케이프해야합니다. 따라서 :edit "foo bar.txt"
작동하지 않습니다. 당신은 필요합니다 :edit foo\ bar.txt
. 즉, :execute 'tabedit' escape('$file', ' ')
올바른 길에있을 수 있습니다.
gvim --remote-send ':tabe foo\ bar.txt<CR>'
bash와 zsh에서 나를 위해 일했습니다. 그리고 따옴표도 중요해 보입니다."
내부적으로 사용하면 작동'
하지 않았지만 다음과 같이했습니다.gvim --remote-send ":tabe 'foo bar.txt'<CR>"