![vim 내에서 스크립트에 실행 비트를 추가하고 종료하려면 어떻게 해야 합니까?](https://linux55.com/image/204263/vim%20%EB%82%B4%EC%97%90%EC%84%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EC%8B%A4%ED%96%89%20%EB%B9%84%ED%8A%B8%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EA%B3%A0%20%EC%A2%85%EB%A3%8C%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
편집 중인 쉘 스크립트에 실행 비트를 추가하고 저장하고 종료하는 일회성 명령이 있습니까?
답변1
내가 아는 한, 아니오내장이 명령을 모두 실행하지만예~/.vimrc
비슷한 일을 하고 미리 몇 가지 작업을 수행하는 것이 가능합니다 .
이 문제를 해결하려면 몇 가지 사항이 함께 필요합니다.
- vim에서 여러 명령을 동시에 실행
- vim을 통해 외부 명령 실행
- 파일이 아직 열려 있는 동안 현재 파일(권한 포함)을 수정하는 경우 vim이 버퍼에 대한 메시지를 제공하지 않도록 방지
- 편리한 키 바인딩 정의
- vim 함수 사용
여기서는 vim 함수를 사용하고 있습니다.여기vim이 파일을 닫기 전에 현재 파일의 권한이 수정된 경우 외부 명령 실행 및 버퍼 메시지 차단을 처리합니다. 또한 명령을 다음과 같이 정의합니다 :Xbit
.
function! SetExecutableBit()
let fname = expand("%:p")
checktime
execute "au FileChangedShell " . fname . " :echo"
silent !chmod a+x %
checktime
execute "au! FileChangedShell " . fname
endfunction
command! Xbit call SetExecutableBit()
:nnoremap <c-x> :w<CR>:Xbit<CR>:q<CR>
:inoremap <c-x> <Esc>:w<CR>:Xbit<CR>:q<CR>
Ctrl+x
추가적으로, vim을 일반 모드로, insert 모드를 파일 내용을 쓰는 키 조합으로 정의( :w
)하고 함수를 실행하여 실행 플래그를 설정( :Xbit
)한 후 파일을 종료하도록 함수 뒤에 가상 맵을 정의했습니다 ( ). :q
) .
~/.vimrc
이 모든 작업을 수행하려면 사용하려는 파일을 열기 전에 파일에 들어가야 합니다. 그러나 Ctrl+x
간단히 누르거나 키 바인딩을 변경하려는 다른 항목을 눌러 호출할 수 있습니다.
원천:
- https://vim.fandom.com/wiki/Setting_file_attributes_without_reloading_a_buffer#:~:text=%20이 %20scripts%20 및 %20other를 생성할 때 %20current%20buffer의 %20file%20 이름.
- https://stackoverflow.com/questions/3249275/multiple-commands-on-same-line
- https://balazshobbies.wordpress.com/vim-jegyzetek/napi-vim-bemelegito/vim-map-remap-nnoremap/