답변:
내 마음에 오는 첫 번째 것은 touch
커서 아래에 파일 이름을 전달 하는 명령 을 사용하는 것입니다.
:map <silent> <leader>cf :!touch <c-r><c-p><cr><cr>
그러나 여러 플랫폼에서 이식 가능한 순수한 Vim 솔루션이 있습니다. 내장 함수 writefile
는 목록을 한 줄씩 파일에 씁니다. 당연히 입력 목록이 비어 있으면 빈 파일이 만들어집니다. (자세한 내용 :help writefile
은 참조)이 부작용을 활용할 수 있습니다.
:map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>
파일 이름 추출은 다른 expand
패턴 을 사용하여 조정할 수 있습니다 (참조 :help expand()
).
그런데 파일을 만들지 않고 편집을 위해 파일을 열려면 다음 gf
과 같은 매핑을 정의 할 수 있습니다 .
:map <leader>gf :e <cfile><cr>
여기서 :e
명령으로 대체 할 수 있습니다 :tabe
또는 유사한 명령.
위의 ib로 탁월한 대답을 취하여 다음과 같이 확장했습니다. 내 목표는 vim을 사용하여 위키에 필요한 새 마크 다운 파일을 만드는 것이 었습니다 (이 경우 골룸 위키).
나는 처음 시도했다 :
map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>`
위의 답변에 명시된대로 작동합니다. 그러나 처음에는 실제로 파일이 vim에서 열리는 것을 보지 못했기 때문에 작동하지 않는다고 생각했습니다. 아래 코드의 두 번째 비트를 사용하면 새 파일이 열립니다. 그래서 나는 그들을 결합하고 시도했다.
map <leader>cf :e <cfile><cr>
wiki 구문과 같은 구문을 사용하여 wiki에서 새 파일을 만들려고 할 때 [[the-new-file]]
대괄호로 파일의 확장자를 허용하지 않기 때문에 wiki에서는 작동하지 않습니다. 그러나 Vim은 새 파일을 만들 때 확장명을 알아야이 파일이 작동합니다. 이 경우에는 다음을 사용했습니다.
map <leader>cf :e <cfile>.md<cr>
새 마크 다운 파일을 만들 수 있습니다. 확장 기능을 하드 코딩하지 않고이를 사용자 정의하는 방법이 있지만 위의 요구 사항에 적합합니다. 다른 확장자 (예 : .wiki 파일 저장)가 필요한 경우 간단한 경로를 사용하여 다음과 같은 다른지도를 만들 것입니다.
map <leader>cwf :e <cfile>.wiki<cr>
부작용으로 동일한 명령을 사용하여 기존 마크 다운 파일을 열 수 있습니다 ( gf
파일 확장자가 없기 때문에 표준 명령은 여기서 작동하지 않습니다).
gf
경우 작동합니다 set suffixesadd=.wiki
. 개선 된 버전은 적어도 하나의 항목 만 포함하는 경우 cf
존중 하는 버전입니다 suffixesadd
.
<cfile>
대신 강의 +1<C-r><C-f>