vi」タグアーカイブ

viの編集時に自動的にインデントがネストされるのを停止する noautoindent, nosmartindent

オートインデントを無効にする

:set noautoindent
:set nosmartindent

vi,vimで編集時に、前の行のインデントをそのまま引き継いでくれる便利な設定があります。
それが autoindent です。

これ、コードを書いている時にはとても便利なんですけど、別のところからクリップボードにコピーしたコードを貼り付ける時は、インデントが二重になってしまって困ったことになります。

そんなときは、

:set noautoindent

でautoindentをオフにします。

でも、なぜかnoautoindentが効かない!という時があります。いや、僕の場合そんな場合のほうが多くて、諦めてダウンロードして別のエディタで開いたりしていたんですけど、最近ようやく気付きました。

vi,vimのインデントには、autoindentとsmartindentという二つのインデントスタイルがあったんですね。

というわけで、smartindentを解除したいときは

:set nosmartindent

でOK。

コピペしたらこうなってしまっていたものが…

</div>                                                                                                                       
<script type="text/javascript">
  var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-99999999-1']);
      _gaq.push(['_trackPageview']);

        (function() {
                    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
                        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
                            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
                              })();

                              </script>
</body>
</html>

綺麗に貼り付けられるようになりました。めでたし。

</div>
</div>                                                                                                                       
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-99999999-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
</body>                                                                                                                      
</html> 

ちなみに、今どんな環境がセッティングされているかは、
:set
で一覧表示させることができます。

また、毎回noautoindentをするようでしたら、.vimrcでデフォルトの設定を変更したほうがいいでしょう。

ロリポップのSSH接続でviの文字化けを解消する

低価格大容量でナウなヤングに人気のレンタルサーバー、ロリポップ。
チカッパプランでは、SSH接続もできて便利そうなので試しに借りてみました。

レンタルサーバー会社によっては、SSH接続はできても使えるコマンドが厳しく制限されていたり、公開鍵認証が使えなかったりと、思うように使えないこともよくあります。(最近だとサーバーカウボーイがそうだった)
ロリポップは、2週間のお試し期間があるのでその点安心です。公開鍵認証もGitも使えるので、正式利用することにしました。

が、ファイルを編集してみようとすると日本語部分が文字化けします。
どうやら、サーバーのエンコーディングがEuc-JPになっているようです。
WordPressを始め、最近のWebアプリ事情はUTF-8が基本なので、ここもそれに合わせましょう。

ログインしたところ、ユーザーのホームディレクトリに、.vimrcを新しく設置します。

$ vi .vimrc
syntax on
set nobackup
set termencoding=utf-8
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,utf-8,ucs2le,ucs-2

これでファイルの編集、保存も問題なくできるようになりました。