:::: MENU ::::
Posts tagged with: vim

Mac OS Xでcronが使えない

Mac OS X上でcronを使う場合、Unix/Linux同様に、下記コマンドで編集・設定が出来ます。

$ crontab -e

デフォルトのエディタが起動し、編集画面となりますが、エディタがvimの場合で、保存しようとすると、下記のエラーが表示されることがあります。

crontab: no crontab for foo – using an empty one
crontab: temp file must be edited in place

どうやら、tempファイルを作成する場所に問題があるようなので、.vimrcに下記を追加

$ cat ~/.vimrc
 set backupskip=/tmp/*,/private/tmp/*

再度、crontabで設定し、反映されていることを確認

$ crontab -l

また、デフォルトのエディタがvimでなはく、viになっている場合には下記のエラーが出ることもあります。

crontab: no crontab for username – using an empty one crontab: “/usr/bin/vi” exited with status 1

この場合には、環境でエディタを別のエディタに指定しましょう。
vimである必要がなく、nanoでもemacsでも良いでしょう。

export EDITOR=/usr/bin/vim

一時的に環境変数を変更しても良いですが、頻繁に使用するのであれば、~/.bashrcや.zshrcなどに明記しておくと良いでしょう。


MacのターミナルにてSolaris上のviでxtermエラーが出るときの対処

MacのターミナルやiTermにて、SunOS(Solaris)にログインし、viを起動すると、下記のエラーが出ることが多々あるのでメモ。

$ vi
xterm-256color: Unknown terminal type I don't know what kind of terminal you are on - all I have is 'xterm-256color'. [Using open mode]

Mac側ではxterm-256colorなのですが、Solaris側ではxterm-256colorって知らんよ!って事なので、Mac側の環境変数TERMを変更してあげればOKです。

Solaris10で使用可能なterminfoは、下記のようにして調べることが出来ます。

$ ls /usr/share/lib/terminfo/x
x1700 x1750 xitex xpcterm xtalk xtermc xterms
x1720 x820 xl83 xpcterms xterm xtermm

(ちなみに、Linuxでは/usr/share/terminfo/xです。)

これを元に、Mac側のターミナルで、環境変数を設定

$ vim ~/.bash_profile
$ export TERM=xterm
$ source ~/.bash_profile

Vimでctagがないよって時

Vimを立ち上げた際に、下記のようなエラーが出た。

Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not
loaded.

こんな時には、ctagsをインストールしてあげるだけでOKですね。

CentOS/RedHat系

# yum install ctags

Ubuntu/Debian系

# apt-get install ctags

CentOS 5.xのvimが古いので手動でインストール

CentOS 5.x上のyumパッケージでは、vimが7.0と古いので、手動で7.3をインストールした。 7.0のvimで、Bundle導入していると、下記のような沢山のエラーが表示されてしまいます。

……

121: 未定義の変数です: g:unite_source_directory_mru_file
E116: Invalid arguments for function filereadable(g:unite_source_directory_mru_f
ile) && s:mru_file_mtime != getftime(g:unite_source_directory_mru_file)
E15: 無効な式です: filereadable(g:unite_source_directory_mru_file) && s:mru_fil
e_mtime != getftime(g:unite_source_directory_mru_file)
function unite#sources#directory_mru#_append..<SNR>49_save の処理中にエラーが検>
出されました:

….

epelやrpmforgeでもパッケージがないようなので、手動にてインストールです。

  1. まずは、yumでインストールしたvimをアンインストール
    $ sudo yum remove vim vim-enhanced 
  2. ソースのダウンロード
    $ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
    $ wget ftp://ftp.jp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz
    $ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz 
  3. 解凍
    $ tar jxvf vim-7.3.tar.bz2
    $ tar zxvf vim-7.2-extra.tar.gz
    $ tar zxvf vim-7.2-lang.tar.gz 
  4. コンパイル
    $ mv vim72 vim73/
    $ cd vim73 $ cd src
    $ ./configure --enable-multibyte --with-features=huge --disable-selinux --prefix='/usr/local/vim-7.3' 
  5. インストール
    $ sudo make install 
  6. リンク付け
    $ sudo ln -s /usr/local/vim-7.3/bin/vim /usr/local/bin/ 

VundleでVimプラグイン導入

かなり以前から、Unix/Linuxでvi/vimを使っているんですが、恥ずかしながら、私も「いまさら聞けない .vim/bundle によるプラグイン管理」と同じ心境で、プラグインとは無縁の環境にありました。

今までに、プラグイン導入を試みたことはあるのですが、うまく動作しない事があり、ずっと諦め状態だったのです。

なので、今更ながら、Vimのプラグイン導入に挑戦です。

Vundleを使って、プラグイン管理(導入)します。(VimとGitが既にインストールされている事が前提です)

導入方法は、VundleのReadmeを見れば、ほぼ分かると思いますが、メモっておきます。

    1. Vundleを導入します
      $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
    2. 自分のホームディレクトリ下に、.vimrcを作成・修正し、下記のように記述します
      $ vim ~/.vimrc
      set nocompatible " be iMproved
      filetype off " required! set rtp+=~/.vim/bundle/vundle/
      call vundle#rc() " let Vundle manage Vundle
      " required!
      Bundle 'gmarik/vundle' " My Bundles here:
      "
      " original repos on github
      Bundle 'tpope/vim-fugitive'
      Bundle 'Lokaltog/vim-easymotion'
      Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
      Bundle 'tpope/vim-rails.git'
      " vim-scripts repos
      Bundle 'L9'
      Bundle 'FuzzyFinder'
      " non github repos
      Bundle 'git://git.wincent.com/command-t.git'
      " … filetype plugin indent on " required!
      "
      " Brief help
      " :BundleList - list configured bundles
      " :BundleInstall(!) - install(update) bundles
      " :BundleSearch(!) foo - search(or refresh cache first) for foo
      " :BundleClean(!) - confirm(or auto-approve) removal of unused bundles
      "
      " see :h vundle for more details or wiki for FAQ
      " NOTE: comments after Bundle command are not allowed..
    3. 上記の.vimrcを保存したら、vimを終了し、起動し直します
    4. vimが起動したら、ESCキーを押し、:(半角コロン)キーを押す
      下部に:(半角コロン)が表示されたら、
      BundleInstallと打ち込むと、.vimrcで指定したプラグインが導入されます

    5. 導入途中では、下部にProccessing…と表示され、全て導入が終わるとDoneと表示され完了です。

 

プラグインの追加は、.vimrc内に、

Bundle ‘プラグイン’

のように明記して、BundleInstallするだけです。

また、プラグインの更新はBundleInstallに!(半角)を追加するだけで、更新されます。

BundleInstall!

後は、使いたいプラグインを探して、プラグインの使い方を覚えるだけですね。

分かってみれば、すごく簡単でした。


vimで改行コード(^M)を削除

foo.txtに^Mの付いた改行コードがついていた場合に、vimで削除する方法


$ vim -b foo.txt

test^M <---この^Mを削除

:%s/^M//g

Tips:

  1. vim -bにて編集すると^Mが表示される
  2. 編集モードでESCキーを押した後、コロン(:)を押し、下部に:を表示させ、コマンド入力モードへ。
  3. ^Mは、^とMのキーを押すのではなく、Controlキーを押したまま、vのキーを押し、続いてmのキーを押す。(Controlキー押したままvm)

VimでBOM付きUTF-8テキストからBOMを削除

Vimでバイナリーモードでファイルを読み込むと、BOMを表示してくれるので、あとは削除するだけ。

$ vim -b test.txt

<feff>これは、テストです。

<feff>の部分を削除して保存。