保存できないファイルを強制保存する方法【tee/sudoコマンド】midSun312019.12.16IT・デジタルTwitterFacebookはてブPocketLINEPinterest読取専用のファイルをうっかりsudoを付けずに開いて編集してしまった場合など、編集後に保存できないことに気づくケースってありますよね。しまった、と思っても再度開きなおして同じ内容を再編集するのは面倒です。そのような時は強制保存してしまいましょう。この記事では、Vimエディタにおいて保存できないファイルを強制保存する方法を解説します。Vimのバージョンは8.1、OSはLinuxのUbuntuを利用しています。sudoコマンドが使えるユーザーで操作する必要がありますのでご注意ください。root権限のread_only.txtを一般ユーザー権限でvimで開いたと想定します。「:wq」コマンドで保存しようとすると、以下のようにそのままでは保存できない旨のエラーが表示されます。上記のエラーは書き込み権限がないファイルを編集して保存しようとしているため、上書き保存ができません。teeコマンドで保存する強制的に保存するには、Linuxのコマンド「tee」コマンドを用いる方法があります。特別なプラグインの追加は必要はありません。読み取り専用のread_only.txtをvimコマンドで開いて編集します。以下のコマンドを実行します。/dev/nullコマンドがやや長いので、それぞれのコマンドについて解説します。:w内容を保存するコマンドです。tee上記のようにすることで「:w」の内容を「!」~以降で受け取ることができます。「!」を付けるとVimエディタで通常のLinuxのコマンドが実行できるようになります。「tee」が上書き保存なので、sudo権限で上書き保存するコマンドになります。%現在のファイル名です。/dev/nullteeした内容を破棄しています。省略することもできますが、省略するとteeの内容がすべて標準端末に出力されることになります。ファイルが更新される警告メッセージが表示されますが「O」を入力して続行します。teeコマンドが実行できると、カーソルは元のファイルに戻るので「:q!」コマンドでVimを終了します。該当のファイルが更新されていることがわかります。sudoで開いて保存するVim上でsudoコマンドを使ってファイルを開いて強制保存することもできます。Vim上でsudoコマンドを使うには、Vimのプラグイン「sudo.vim」の導入が必要です。sudo.vimを追加するsudo.vimを『公式ページ』からダウンロードします。ダウンロードしたスクリプトをVimのプラグインのディレクトリに配置します。プラグインディレクトリは次のとおりです。~/.vim/plugin当該ファイルが存在しない場合は新しく作成する必要があります。–version」コマンドを実行すると表示されます。sudoで強制保存するsudo.vimのプラグインが追加できたら強制保存してみましょう。読み取り専用のread_only.txtをvimコマンドで開いて編集します。Vimのコマンドラインで次のコマンドを実行します。sudo:%上記が「:w」で保存する内容をsudo権限で開いた同名のファイルに保存するコマンドになります。ファイルが更新される旨、警告メッセージが表示されますが「O」を入力してEnterキーを押します。再度Enterキーを押します。以上でsudo.vimによる強制保存は完了です。ファイルを確認すると更新されていることが確認できます。以上、Vimで保存できないファイルを強制保存する方法でした。:midSun31フリーでWebエンジニアとライターやってます。速く打てるキーボードとモカブレンドとワインとバーゼル問題が好物です。運動不足をひしひしと実感しているのでフィットネス通おうか悩み中です。コメントをキャンセルメールアドレスが公開されることはありません。sudoで強制保存する。