ターミナル(poderosa)上で vi で開いているファイルに対してのペースト。
AmazonLinux2 にしてから、インデントが崩れる事象が発生しました。
手元のエディタ(Visual Studio Code)では半角スペースでキレイにインデントされているのですけどね・・・。
そこで VSCode 上のターミナルを使って試してみたのですが結果は同じ。
ということで、怪しいのは vim ですね。
今回は vim の設定で自動インデントを回避してみたので紹介します。
vimのコマンドでペーストモードにする
vim のコマンドは基本的なものしか知らないのですが、過去に文字エンコーディングの変更を行ったことがあります。

これと同じように、vim にペーストモードを操作することが可能です。
以下のコマンドでペーストモードとなり、自動インデントが無効となります。
:set paste
元に戻したい時は「nopaste」ですが、
:set nopaste
元に戻す必要はないので最初からペーストモードになって欲しいところ。
vimの設定ファイルでペーストモードにする
vi 起動時にペーストモードになっていた方が嬉しいので、.vimrc ファイルに設定を書いてみることにします。
1 2 3 | $ vi .vimrc set paste |
反映します。
1 | $ source .vimrc |
これで最初からペーストモードとなりました。
入力モードにするとエディタの下部に以下のように表示されます。
— INSERT (paste) —
Windowsで秘密鍵のパーミッション設定
vim とは関係ないのですが、ちょっと余談。
冒頭で VSCode のターミナルについて触れましたが、Windows の場合は Power Shell になるんですよね。
ssh は使えるけど、コマンド実行したら下記のエラーが。
1 2 3 4 5 6 | $ ssh -i C:\work\key\aws.pem hoge@xxx.xxx.xxx.xxx Permissions for 'C:\\work\\key\\aws.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. hoge@xxx.xxx.xxx.xxx: Permission denied (publickey,gssapi-keyex,gssapi-with-mic). |
どうやら Power Shell では、Linux や Mac(UNIX系) のように chmod や chown は使えないようです。
1 2 3 4 | chmod 600 c:\work\aws.pem chmod : 用語 'chmod' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述 されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:1 |
調べて cacls コマンドで読み込み権限にしてみたのですが結果は同じ。
1 | $ icacls c:\work\key\aws.pem /grant hoge:R |
結果的には、個人ユーザの権限がフルコントロールだとダメということではなく、個人ユーザ以外のユーザにファイルが開放されているのがダメみたいですね。
秘密鍵のファイルを右クリックして、プロパティのセキュリティタブで個人ユーザ以外を削除しましょう。
(詳細設定から継承を外せば削除可能)
参考になった記事を紹介しておきます。
まとめ
vim のペーストモードについて紹介しました。
vi で編集中のファイルにペーストした際、インデントが大きく崩れる場合は試してみてください。
ディストリビューションが変わったのが原因だと思いますが、デフォルト設定が急に変わるのは困りますね。