2016년 5월 31일 화요일

vim: grep 결과 컬러링

set grepprg=grep\ --color=always\ --exclude=tags\ --exclude=.git\ -n\ $*\ /dev/null
" --color=always: grep 결과에 색을 입혀준다.
" --exclude=GLOB: 매치된는 이름의 파일은 검색하지 않음
" :grep abc -wrn .  처럼 사용



참고
http://stackoverflow.com/questions/12764999/colorizing-the-output-of-make-grep-etc-in-vim

2016년 5월 15일 일요일

script: 파일 생성일로 파일명 변경

사진의 경우, 촬영 정보를 사용하여 파일 이름을 바꿔주는 툴이 많다.
동영상은 그런 툴이 없는듯 하다.

파일 생성일로 파일명을 바꿔준다. 
--------------------------------------------------------------------------------
#! /bin/bash

verbose=true
try_count=10

ext_list=(
        #extention, description
        "jpg,JPEG image data"
        "png,PNG image data"
        "mov,ISO Media, Apple QuickTime movie"
        # Add more
)

get_name()
{
        stat "$1" |
        sed -n '/Birth:/{s/^\s*Birth:\s*//;s/\(.\{22\}\).*/\1/;s/:/-/g;s/[ .]/_/g;p}'
}

find_next_name()
{
        for i in `seq 1 $try_count`; do
                [ -f "$1_$i.$2" ] || {
                        echo "${1}_$i"
                        return
                }
        done
}

find_ext()
{
        local EXT="${1##*.}"
        [ -z "$EXT" ] && {
                for i in "${ext_list[@]}"; do
                        desc="${i#*,}"
                        file $1 | grep -qw "$desc" && {
                                EXT="${i%%,*}"; break
                        }
                done
        }
        echo "$EXT"
}

ls -1 |
while read f; do
        [ -f "$f" ] || continue

        name=$(get_name "$f")
        ext=$(find_ext "$f")

        [ "$f" = "$name.$ext" ] && {
                [ $verbose = true ] && echo "'$f' is already changed"
                continue
        }

        [ -f "$name.$ext" ] && name=$(find_next_name "$name" "$ext")

        if [ -z "$name" ]; then
                echo "$f: too many files with same name. Use larger try_count"
        else
                [ $verbose = true ] && echo "mv '$f' '$name.$ext'"
                mv "$f" "$name.$ext"
        fi
done
--------------------------------------------------------------------------------

2016년 5월 12일 목요일

vim: 명령을 여러 창에 한 번에 적용하기

모든 버퍼에 적용
:bufdo %s/aaa/bbb/g | w

모든 윈도우에 적용
:windo set scb

--------------------------------------------------------------------------------
주의: bufdo의  예와 같이 내용을 수정/저장 하려는 경우
       현재 버퍼에 수정사항이 있으면 실행이 안되므로
       저장 후 실행해야 한다.
--------------------------------------------------------------------------------

2016년 4월 20일 수요일

script: oneline

이름: oneline

코드:
--------------------------------------------------------------------------------
#! /bin/bash

SEP=" "

help()
{
        echo "Joins multiple lines to one line"
        echo "usage: ${0##*/} [-d DELIMETER]"
        echo
        exit
}

while getopts "d:" opt; do
        case $opt in
                d) SEP="$OPTARG";;
                *) help;;
        esac
done

sed -n "H;\${x;s/^\n*//;s/\n*$//;s/\n/$SEP/g;p}"
--------------------------------------------------------------------------------

2016년 3월 28일 월요일

target command

#! /bin/sh

BDADDR="xx:xx:xx:xx:xx:xx"

CMD=lscall #수정
PROTOCOL=
URI="$(cd ${0%/*}; pwd)/${0##*/}"
URI="${URI#/ls/}"
OPTF="-f"
OPTN="-n 1"
PRINTONLY=no
PARAM=

param_add()
{
        local NEW="\"$1\":$2"
        [ -z "$PARAM" ] && PARAM="$NEW" || PARAM="$PARAM,$NEW"
}

param_add_string()
{
        local FIRST=$1
        shift
        param_add $FIRST "\"$*\""
}

lscall()
{
        echo "$CMD $OPTF $OPTN $PROTOCOL$URI '{$PARAM}'"
        [ $PRINTONLY = yes ] || $CMD $OPTF $OPTN $PROTOCOL$URI '{'$PARAM'}'
}

while [ $# -gt 0 ]; do
        case "$1" in
                -s)     OPTN="-i"
                        param_add subscribe true ;;
                -n)     OPTN="-n $2"
                        shift ;;
                -F)     OPTF= ;;
                -p)     PRINTONLY=yes ;;
                *)      break ;;
        esac
        shift
done
while [ $# -gt 0 ]; do
        case "$1" in
                *)      break ;;
        esac
        shift
done

2016년 2월 26일 금요일

vim 자동완성 리스트 추가

vim 의 자동 완성 기능은 매우 편리하지만 자동 완성 후보는 열린 파일에서만 선택된다.
다음 명령으로 후보가 있는 파일을 추가할 수 있다.

:set cpt+=k/path/to/file
 
 
예
:set cpt+=k~/.aspell.en.pws 
 
:h 'complete' 

vim: 점프


:ju              " 모든 위치를 표시
Ctrl-o      " 이전 위치로 이동
Ctrl-i        " 다음 위치로 이동