vimでsplitしてるときにjkでスプリッタを動かせるやつ

「世界の全てのモノは hjkl で動かせるべきだ」とお考えの vi 使いのみなさんへ。


このスクリプトを、~/.vim/plugin/ においてやって vi を立ち上げ、:split してるときに、CTRL を押しながら WE を押してやると、動かせるモードが ON になったり、OFF になったりします。


~/.vim/plugin/ ディレクトリがないよ、っていう場合は、作ってあげるといいです。


ここに、


https://github.com/peanutsjamjam/peanutsjamjam_misc


pjj_win_resize.vim


という名前で置いてあります。:vsp したときは、hl で左右に動かせますが、スプリッタが 2 つ以上になっているときはあまりちゃんと考えてません。


追記:
githubを見に行くのがめんどい時は、ここからコピっていけるようにソース貼り付け。

この中身を、pjj_win_resize.vim という名前で、~/.vim/plugin/ に置いてあげると動きます。

" Vim global plugin that enables us to move status line with keys 'j' and 'k'.
" Maintainer: Atsushi SUGAWARA <peanutsjamjam@gmail.com>
" Last Change:2011 Feb 28
" License:    This file is placed in the public domain.
"
" install to ~/.vim/plugin/

if &cp || exists("g:loaded_pjj_win_resize")
  finish
endif
let g:loaded_pjj_win_resize = 1

let s:keepcpo = &cpo
set cpo&vim

let s:enabled = 0

function s:Enable()

  if (winnr("$") == 1)
    " there is only 1 window. byebye.
    let s:enabled = 0
    return
  endif

  if (winnr() != winnr("$"))
    " not the last window
    exe "nmap j <C-W>+"
    exe "nmap k <C-W>-"
  else
    " here is the last (bottom) window
    exe "nmap j <C-W>-"
    exe "nmap k <C-W>+"
  endif

  exe "nmap h <C-W><"
  exe "nmap l <C-W>>"

  echo "Resize mode on. Press <C-W><C-E> again to quit."
endfunction

function s:Disable()

  exe "nunmap j"
  exe "nunmap k"
  exe "nunmap h"
  exe "nunmap l"
  echo "Resize mode off."

endfunction

function! s:ToggleMode()

  if s:enabled == 0
    let s:enabled = 1
    call s:Enable()
  else
    let s:enabled = 0
    call s:Disable()
  endif

endfunction

nnoremap <silent> <C-W><C-E> :call <SID>ToggleMode()<CR>

" vim: ts=2 sts=2 sw=2 et
let &cpo= s:keepcpo
unlet s:keepcpo

zlib, gzcat

http://lists.freebsd.org/pipermail/freebsd-questions/ からダウンロードした 2009-May.txt.gz を、zlib を使った自作プログラムで伸長してみた。

#include <err.h>
#include <stdio.h>
#include <zlib.h>

int main(int argc, char **argv) {
    char buf[256];
    gzFile fp;

    if (argc < 2)
        return 1;
    fp = gzopen(argv[1], "rb");
    if (!fp)
        err(1, "gzopen");
    while (!gzeof(fp)) {
        gzgets(fp, buf, sizeof buf);
        printf("%s", buf);
    }
    gzclose(fp);

    return 0;
}


このプログラムを -lz を付けてコンパイルして、2009-May.txt.gz を読ませると、その md5 値は、

% ./program 2009-May.txt.gz | md5
925fdeca227d43369f075714e3211ed2


しかし、gzcat を使うと、

% gzcat 2009-May.txt.gz | md5
0ccec811ef9aed34dcc3a54a2cbb9e7d


なんでだろ。