編集中のシェルスクリプトに実行ビットを追加、保存、終了するワンタイムコマンドはありますか?
答え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を通常モードに、挿入モードをファイルの内容を書き込むキーの組み合わせとして定義()し、関数を実行して実行: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/