外部ソフトやプラグインに依存しないCLI環境とdotfiles
はじめに
.vimrcや.tmux.conf,.tcshrcなどをgithubでdotfilesとして管理しているのですが,春から就職する会社はセキュリティが厳しく,githubなどの外部サービスの利用が期待できないので,はてなブログとして公開することでどこからでもアクセスできるようにしておく.
外部サービスが使えない環境を前提としているので,原則としてプラグインなどは導入せずバニラで使用する. また,シェルには半導体業界のデファクトスタンダードであるtcshを利用する.
CLI環境
dotfiles
ここにdotfilesをコピペする.コメントや解説は後日
.vimrc
mapc!
let mapleader="\<SPACE>"
se timeoutlen=400
filetype plugin indent on
syntax on
nn <c-a> <Home>
nn <c-e> <End><Right>
nn x "_x
nn X "_X
nn dh ^_d$
nn U <c-r>
nn Y y$
nn <silent>j gj
nn <silent>k gk
nn s <Nop>
nn S <Nop>
nn c <Nop>
nn C <Nop>
nn sh <c-w>h
nn sj <c-w>j
nn sk <c-w>k
nn sl <c-w>l
nn sp :bro ol<CR>
nn <C-s> :cal ToggleNetrw()<CR>
nn ss :cal ToggleNetrw()<CR>
nn <silent>H 5h
nn <silent>J 10gj
nn <silent>K 10gk
nn <silent>L 5l
nn <Leader>s :cal Savereg()<CR>
nn <Leader>l :cal Loadreg()<CR>
nn <silent><Tab> :cal NextNonQuickfix()<CR>
nn <silent><S-Tab> :cal PrevNonQuickfix()<CR>
nn <BS> "_X
nn <BS> "_X
nn <CR> :call append(line("."), "")<CR><Down>
nn n nzzzv
nn N Nzzzv
nn p ]p
nn P ]P
nn ; :
nn t ;
nn T ,
nn <Leader><space> za
nn <Leader>d zd
nn <Leader>D zE
nn <expr> i empty(getline('.')) ? '"_cc' : 'i'
nn <expr> A empty(getline('.')) ? '"_cc' : 'A'nn <Leader>a zR
nn <C-c> :cal ToggleQuickfix()<CR>
nn cc :cal ToggleQuickfix()<CR>
nn cp :cp<CR>
nn cn :cn<CR>
nn <expr> <C-p> '<Cmd>CCycle -' .. v:count1 .. '<CR>'
nn <expr> <C-n> '<Cmd>CCycle ' .. v:count1 .. '<CR>'
vn x "_x
vn s <Nop>
vn S <Nop>
vn H 5h
vn J 10j
vn K 10k
vn L 5l
vn t ;
vn T ,
vn <silent>j gj
vn <silent>k gk
vn <c-a> 0
vn <c-e> $
vn v <c-v>
vn ( di()<Esc>P<Left>%
vn [ di[]<Esc>P<Left>%
vn { di{}<Esc>P<Left>%
vn ) di()<Esc>P<Left>%
vn ] di[]<Esc>P<Left>%
vn } di{}<Esc>P<Left>%
vn < di<><Esc>P<Left>%
vn > >gv
vn ; :
vn n nzzzv
vn N Nzzzv
vn <BS> "_X
vn <space> zf
vn <c-a> <Home>
vn <c-e> <End>
vn <c-p> <Up>
vn <c-n> <Down>
ino jj <esc>
ino Jj <esc>
ino jJ <esc>
ino JJ <esc>
cno <c-a> <Home>
cno <c-e> <End>
cno <c-p> <Up>
cno <c-n> <Down>
cno <c-b> <Left>
cno <c-f> <Right>
cno <c-d> <Del>
cno jj <C-c>
cno Jj <C-c>
cno jJ <C-c>
cno JJ <C-c>
cno qw wq
com! Wq wq
com! Qw wq
com! WQ wq
com! DiffOrig vne | se bt=nofile | r ++edit # | 0d_ | diffthis | wincmd p | diffthis
com! Reload so ~/.vimrc
xn y mzy`z
xn p P
xn i<space> iW
xn a<space> aW
ono i<space> iW
ono a<space> aW
se enc=utf-8
se fenc=utf-8
se nobk
se noswf
se nocp
se so=2
se wmnu
se ar
se hid
se ml
se smd
se sc
se ve=onemore,block
se bs=indent,eol,start
se vi='10,\"1000
se cot=menuone,noselect
se pa=$PWD/**
se acd
let undodir=expand('~/.vim/undodir')
if !isdirectory(undodir)
cal mkdir(undodir, 'p')
en
let &undodir=undodir
se udf
se ul=1000
se fdls=0
se fdc=1
se vop-=options
se fdm=manual
if &term=~'screen' || &term =~ 'tmux'
let &t_SI="\ePtmux;\e\e[6 q\e\\"
let &t_EI="\ePtmux;\e\e[1 q\e\\"
let &t_SR="\ePtmux;\e\e[4 q\e\\"
el
let &t_SI="\e[6 q"
let &t_EI="\e[1 q"
let &t_SR="\e[4 q"
en
se nu
se ru
se cul
se sm
se tal=%!BufferTabLine()
se stal=2
se ls=2
se wim=full
se wic
se vb t_vb=
se ww=b,s,h,l,<,>,[,]
" set shortmess+=I
se stl=%m%r%h%w\ [%l/%L]\ %y\ %F
se wrap
se lbr
se sb
se spr
" Tab
ino <expr> <tab> pumvisible() ? "\<c-n>" : "\<tab>"
se et
se ts=2
se sw=2
se sts=2
se ai
se si
" Search
se ic
se scs
se is
se ws
se hls
no <silent><esc><esc> :nohlsearch<cr><esc>:diffoff<cr><esc>
" Command line window
se cwh=20
" mouse
if has('mouse')
se mouse=a
if has('mouse_sgr')
se ttym=sgr
elsei v:version > 703 || v:version is 703 && has('patch632')
se ttym=sgr
el
se ttym=xterm2
en
en
" Color scheme
se t_Co=256
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
se bg=dark
hi Normal ctermfg=252 ctermbg=NONE
hi Comment ctermfg=244
hi Constant ctermfg=99
hi Statement ctermfg=197 cterm=BOLD
hi String ctermfg=228 cterm=BOLD
hi Character ctermfg=99
hi Identifier ctermfg=208
hi Type ctermfg=81
hi Title ctermfg=228
hi Preproc ctermfg=81
hi Special ctermfg=81
hi Directory ctermfg=14
hi Question ctermfg=46
hi markdownLinkText ctermfg=228
hi markdownItalic cterm=NONE
hi markdownItalic cterm=ITALIC
hi Cursor ctermbg=240
hi LineNr ctermfg=252 ctermbg=238
hi CursorLine ctermbg=238 cterm=NONE
hi CursorLineNr ctermfg=238 ctermbg=250 cterm=NONE
hi Visual ctermbg=238 cterm=NONE
hi Search ctermfg=212 ctermbg=236 cterm=UNDERLINE
hi incsearch ctermfg=212 ctermbg=236 cterm=UNDERLINE
hi matchparen ctermfg=212 ctermbg=NONE cterm=UNDERLINE
hi Pmenu ctermbg=238 cterm=NONE
hi PmenuSel ctermfg=252 ctermbg=240 cterm=NONE
hi WinSeparator ctermfg=252 ctermbg=238
hi VertSplit ctermfg=238 ctermbg=252
hi statusline ctermfg=156 ctermbg=238
hi statuslinenc ctermfg=238 ctermbg=250
hi tablinesel ctermfg=238 ctermbg=156
hi tablinefill ctermfg=238 ctermbg=252
hi tabline ctermfg=252 ctermbg=238
hi ModeMsg ctermfg=11
hi ErrorMsg ctermfg=9 ctermbg=NONE
hi WarningMsg ctermfg=9 ctermbg=NONE
hi DiffAdd ctermbg=24
hi DiffDelete ctermfg=162 ctermbg=53
hi DiffChange ctermbg=236
hi DiffText ctermfg=210 ctermbg=236 cterm=BOLD
hi FoldColumn ctermfg=81 ctermbg=238
hi Folded ctermfg=81 ctermbg=NONE
hi netrwDir ctermfg=81 ctermbg=NONE
hi netrwClassify ctermfg=250 ctermbg=NONE
hi netrwLink ctermfg=156 ctermbg=NONE
hi netrwTreebar ctermfg=242 ctermbg=NONE
hi netrwSymLink ctermfg=208 ctermbg=NONE
hi netrwExe ctermfg=99 ctermbg=NONE
let s:vimreg=expand('~/.vim/vimreg')
fu! Savereg() abort
cal writefile([json_encode(getreginfo())], s:vimreg)
ec 'Save register'
endf
fu! Loadreg() abort
cal setreg(v:register, readfile(s:vimreg)->join()->json_decode())
ec 'Restore register'
endf
fu! BufferTabLine()
let buffer_tabline=''
let s:buffer_info=s:GetBufferName()
for i in s:buffer_info
if i[3] == 1
let buffer_tabline=buffer_tabline . '%#TabLineSel#'
el
let buffer_tabline=buffer_tabline . '%#TabLine#'
en
let buffer_tabline=buffer_tabline . i[0] . ':' . i[1] . ' '
if i[2] == 1
let buffer_tabline=buffer_tabline . ' +'
en
endfo
let buffer_tabline=buffer_tabline . '%#TabLineFill#%T'
let buffer_tabline=buffer_tabline . '%='
retu buffer_tabline
endf
fu! s:GetBufferName()
redi => s:buffers
silent ls
redi END
let s:result=[]
let s:buffer_list=split(s:buffers, "\n")
for b in s:buffer_list
let s:buffer_line=split(b)
let s:buffer_num=s:buffer_line[0]
let s:buffer_name=''
let s:current_buffer=0
let s:edit_flag=0
let s:unmodifiable=0
for i in s:buffer_line
if i == '%a'
let s:current_buffer=1
elsei i == '+'
let s:edit_flag=1
elsei i == 'a-' || i == '%a-'
let s:unmodifiable=1
elsei i[0] == '"'
let s:path=substitute(i, '"', '', 'g')
let s:name_path=split(s:path, '/')
let s:buffer_name=s:name_path[len(s:name_path) - 1]
el
en
endfo
if s:unmodifiable != 1
let s:result=add(s:result, [s:buffer_num, s:buffer_name, s:edit_flag, s:current_buffer])
en
endfo
retu s:result
endf
let g:netrw_banner=0
let g:netrw_altv=1
let g:netrw_preview=1
let g:netrw_liststyle=3
let g:netrw_keepdir=0
let g:netrw_browse_split=4
let g:netrw_bufsettings='noma nomod number nobl nowrap ro'
let g:netrw_dirhistmax=0
let g:netrw_followsymlink=1
let g:netrw_mousemaps=1
let g:netrw_sort_sequence='[\/]$,*'
let g:netrw_sort_options='i'
let g:netrw_fastbrows=0
let g:netrw_timefmt="%Y/%m/%d(%a) %H:%M:%S"
let g:netrw_sizestyle="H"
let g:NetrwIsOpen=0
fu! ToggleNetrw()
if g:NetrwIsOpen
let i = bufnr("$")
wh (i >= 1)
if (getbufvar(i, "&filetype") == "netrw")
silent exe "bw" . i
en
let i-=1
endw
let g:NetrwIsOpen=0
el
let g:NetrwIsOpen=1
silent Le
silent vert res 25
en
endfu
aug MyNetrwSettings
au!
au FileType netrw nn <buffer> s <Nop>
au FileType netrw nn <buffer> <Tab> <Nop>
au FileType netrw nn <buffer> <S-Tab> <Nop>
au FileType netrw nn <buffer> <c-a> <HOME>
au FileType netrw nn <buffer> <c-e> <END>
au FileType netrw nn <buffer> <c-p> <Up>
au FileType netrw nn <buffer> <c-n> <Down>
au FileType netrw nn <buffer> <c-b> <Left>
au FileType netrw nn <buffer> <c-f> <Right>
au FileType netrw nn <buffer> > <c-w>2>
au FileType netrw nn <buffer> < <c-w>2<
au FileType netrw let g:NetrwIsOpen=1
au FileType netrw vert silent res 5
aug END
let g:QuickfixIsOpen=0
fu! ToggleQuickfix()
if g:QuickfixIsOpen
let i = bufnr("$")
wh (i >= 1)
if (getbufvar(i, "&filetype") == "qf")
silent exe "bw" . i
en
let i-=1
endw
let g:QuickfixIsOpen=0
el
let g:QuickfixIsOpen=1
silent cope
silent res 5
en
endfu
aug MyQuickfixSettings
au!
au FileType qf nn <buffer> <Tab> <Nop>
au FileType qf nn <buffer> <S-Tab> <Nop>
au FileType qf nn <buffer> <CR> <CR>
au FileType qf let g:QuickfixIsOpen=1
au FileType qf silent res 5
aug END
fu! NextNonQuickfix()
let curbuf = bufnr('%')
exe 'bn'
wh &buftype == 'quickfix'
exe 'bn'
if bufnr('%') == curbuf
brea
end
endw
endf
fu! PrevNonQuickfix()
let curbuf = bufnr('%')
exe 'bp'
wh &buftype == 'quickfix'
exe 'bp'
if bufnr('%') == curbuf
brea
end
endw
endf
aug QuickFixCmd
au!
au QuickFixCmdPost *grep* cwindow
aug END
fu! s:c_cycle(count) abort
let qf_info = getqflist({ 'idx': 0, 'size': 0 })
let size = qf_info->get('size')
if size == 0
retu
end
let idx = qf_info->get('idx')
let num = (idx + size + a:count) % size
if num == 0
let num = size
end
exe num .. 'cc'
endf
com! -nargs=1 CCycle call s:c_cycle(<q-args>)
aug HighlightSpaces
au!
au VimEnter,WinEnter,BufWinEnter,ColorScheme * hi Spaces cterm=underline ctermfg=244 ctermfg=244
au VimEnter,WinEnter,BufWinEnter * match Spaces /^\s\+\|\s\+$/
aug END
aug vimrcEx
au!
au BufRead * if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" | en
aug END
aug source-vimrc
au!
au BufWritePost *vimrc so $MYVIMRC | se fdm=manual
aug END
.tmux.conf
set -g prefix C-o
unbind C-b
set -g xon
unbind C-s
set -s escape-time 20
set -g history-limit 100000
set -g mode-keys vi
set -g aggressive-resize off
set-option -g default-terminal "tmux-256color"
set-option -ga terminal-overrides ",$TERM:Tc"
bind \\ split-window -h -c "#{pane_current_path}"
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind C-d detach-client
bind C-x kill-pane
bind r source-file ~/.tmux.conf \; display "Reloaded!"
bind C-o send-key C-o
bind C-r source-file ~/.tmux.conf \; display "Reloaded!"
bind -n C-h select-pane -L
bind -n C-l select-pane -R
bind -n C-j select-pane -D
bind -n C-k select-pane -U
unbind C-Enter
bind C-c new-window -c "#{pane_current_path}"
bind -n M-l select-window -t :+
bind -n M-h select-window -t :-
bind -n M-j switch-client -n
bind -n M-k switch-client -p
bind -r H resize-pane -L 1
bind -r J resize-pane -D 1
bind -r K resize-pane -U 1
bind -r L resize-pane -R 1
bind s new-session
bind C-s new-session
bind . command-prompt "rename-session %%"
bind S set-window-option synchronize-panes\; display "Toggle Sycronizer"
set -g base-index 1
setw -g pane-base-index 1
set -g mouse on
bind-key -T edit-mode-vi WheelUpPane send-keys -X scroll-up
bind-key -T edit-mode-vi WheelDownPane send-keys -X scroll-down
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
unbind-key -T copy-mode-vi Enter
setw -g status-style fg=colour250,bg=colour238
set -g status-left ""
set -g status-right "#[bg=colour156, fg=colour238, bold][%Y/%m/%d %H:%M][#S]"
set -g message-style 'fg=colour238,bg=colour228, bold'
set -g message-command-style 'fg=colour238,bg=colour228, bold'
set -g mode-style 'fg=colour238,bg=colour228, bold'
set -g status-justify left
setw -g window-status-format '#[fg=colour248, bold] #h #W'
setw -g window-status-current-format '#[bg=colour156, fg=colour238, bold]#{?client_prefix,#[bg=colour228],} #h #W'
set -g window-style 'bg=colour236'
set -g window-active-style 'bg=colour233'
set -g pane-border-style 'fg=colour238, bg=colour232'
set -g pane-active-border-style 'fg=colour238, bg=colour232'
set -g clock-mode-colour colour156
set -g clock-mode-style 24
.tcshrc
unalias *
# enviroment value
setenv LESS '-i -M -R -Q -x4 -z-2 -g -S'
setenv TERM xterm-256color
setenv COLORTERM truecolor
setenv EDITOR 'vim'
setenv PAGER 'less'
setenv GIT_EDITOR 'vim'
setenv LS_COLORS 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.pdf=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'
setenv GREP_COLORS 'ms=01;31:mc=01;31:sl=01;32:cx=01;33:fn=35:ln=32:bn=32:se=36'
# complete
set filec
set autolist=ambiguous
set complete=enhance
set correct=all
set autocorrect
set autoexpand
set listjobs=long
if ( ! -e ~/.tmp) then
mkdir ~/.tmp
endif
# history
if ( ! -e ~/.tcsh_history) then
touch ~/.tcsh_history
endif
set histfile = ~/.tcsh_history
set history = 10000
set savehist = (10000 merge)
set histdup = erase
# other
set color
set host=`hostname`
set nobeep
set noclobber
set notify
set path = ($path ~/.fzf/bin ~/.local/bin ~/scripts)
set rmstar
set tperiod=1
alias gitbranch '\git branch --no-color |& sed -e "/^[^*]/d" -e "s/* \(.*\)/\[\1\]/"'
alias precmd 'history -S && history -L'
set prompt = "%{\e[32;1m%}%n@%m %{\e[34;1m%}[%P] %{\e[39;0m%}[%~] %{\e[32;1m%}`gitbranch` \n%{\e[34;1m%}-> %%%{\e[0m%} "
alias cd 'chdir \!* && pwd -L >> ~/.cd_history && set prompt = "%{\e[32;1m%}%n@%m %{\e[34;1m%}[%P] %{\e[39;0m%}[%~] %{\e[32;1m%}`gitbranch` \n%{\e[34;1m%}-> %%%{\e[0m%} "'
if ( ! -e ~/.cd_history) then
touch ~/.cd_history
endif
if ( ! -e ~/.vim/vimreg) then
touch ~/.vim/vimreg
endif
if ( ! -e ~/.vim/vimhis) then
touch ~/.vim/vimhis
endif
alias dclean 'awk '\''{ seen[$0] = NR } END { for (line in seen) print seen[line], line }'\'' ~/.cd_history | sort -k1,1n | cut -d" " -f2- | tail -n 99 >! ~/.tmp/.cd_history.temp && mv ~/.tmp/.cd_history.temp ~/.cd_history && set dcd_cmp = `cat ~/.cd_history | nl -n rz -w 2 | cut -f1 | tac | xargs` && complete dcd "C/*/($dcd_cmp)/"'
alias vclean 'awk '\''{ seen[$0] = NR } END { for (line in seen) print seen[line], line }'\'' ~/.vim/vimhis | sort -k1,1n | cut -d" " -f2- >! ~/.tmp/.vimhis.temp && mv ~/.tmp/.vimhis.temp ~/.vim/vimhis'
alias dhist 'dclean && cat -n ~/.cd_history | tail -n -20'
alias dgrep 'dclean && cat -n ~/.cd_history | grep'
alias dcdl 'cd `tail -n 1 ~/.cd_history` && pwd -L'
alias dcd 'cd `tail -n +\!* ~/.cd_history | head -1` && pwd -L'
alias drm 'sed -i '\''\!*d'\'' ~/.cd_history'
alias dless 'dclean && cat -n ~/.cd_history | less'
alias dhis dhist
alias dhi dhist
alias dls dhist
alias dles dless
alias cdhistory 'dclean && vim ~/.cd_history'
alias vimrc 'vim ~/.vimrc'
alias tcshrc 'vim ~/.tcshrc'
alias bashrc 'vim ~/.bashrc'
alias gitconfig 'vim ~/.gitconfig'
alias tmuxconf 'vim ~/.tmux.conf'
alias reload 'source ~/.tcshrc'
alias reloa 'source ~/.tcshrc'
alias relo 'source ~/.tcshrc'
alias ls 'ls -vF --color=auto --group-directories-first'
alias ll 'ls -hl --time-style=+"%Y/%m/%d %H:%M:%S"'
alias la 'll -a'
alias llt 'ls -thl --time-style=+"%Y/%m/%d %H:%M:%S"'
alias lat 'llt -a'
alias tree 'tree -C'
alias grep 'grep --color=auto'
alias fgrep 'fgrep --color=auto'
alias egrep 'egrep --color=auto'
# for typo
alias cd- 'cd -'
alias cd~ 'cd ~'
alias cd.. 'cd ..'
alias cd../ 'cd ../'
alias cd. 'cd ../'
alias cd./ 'cd ../'
alias cd,, 'cd ..'
alias cd,,/ 'cd ../'
alias cd, 'cd ../'
alias cd,/ 'cd ../'
alias dc 'cd'
alias dc- 'cd o'
alias dc~ 'cd ~'
alias dc.. 'cd ..'
alias dc../ 'cd ../'
alias dc. 'cd ../'
alias dc./ 'cd ../'
alias dc,, 'cd ..'
alias dc,,/ 'cd ../'
alias dc, 'cd ../'
alias dc,/ 'cd ../'
alias sl 'ls'
alias ks 'ls'
alias sk 'ls'
alias lla 'la'
alias les 'less'
alias vim 'vclean && \vim'
alias vim. 'vim ./'
alias vim./ 'vim ./'
alias e 'emacs -nw'
alias v. 'vim ./'
alias v./ 'vim ./'
alias vi. 'vim ./'
alias vi./ 'vim ./'
alias vim- 'vim -'
alias vi- 'vim -'
alias make 'set make_cmp = `cat Makefile | sed -n '\''s/:$//p'\'' | xargs` && complete make "C/*/($make_cmp)/" && \make'
alias maek 'make'
alias amek 'make'
alias amke 'make'
alias meak 'make'
alias meka 'make'
alias l 'ls'
alias v 'vim'
alias vi 'vim'
alias ci 'vim'
alias cim 'vim'
alias in 'vim'
alias vin 'vim'
alias cin 'vim'
alias vm 'vim'
alias t 'tmux'
alias ta 'tmux a -t'
alias taa 'tmux a'
alias tls 'set tls_cmp = `tmux ls | sed '\''s/:.*$//g'\'' | xargs` && complete ta "C/*/($tls_cmp)/" && tmux ls | nl'
alias tlsa 'tmux a -t `tmux ls | sed '\''s/:.*$//g'\'' | tail -n +\!* | head -1`'
alias tn 'tmux new -s'
alias tkill 'tmux kill-session -t'
alias tkillall 'tmux kill-server'
alias git 'set git_cmp = `\git log | grep "^commit" | cut -d" " -f2 | cut -c 1-10 | xargs` && complete gvdiff "C/*/($git_cmp)/" && \git'
alias g 'git'
alias gi 'git'
alias gst 'git status'
alias ga 'git add'
alias gaa 'git add -A'
alias gap 'git add -p'
alias gb 'git branch'
alias gbd 'git branch -d'
alias gc 'git commit'
alias gcm 'git commit -m'
alias gco 'git checkout'
alias gcob 'git checkout -b'
alias gps 'git push'
alias gpl 'git pull'
alias gl 'git log'
alias glog 'git log'
alias gtree 'set git_cmp = `git log | grep "^commit" | cut -d" " -f2 | cut -c 1-10 | xargs` && complete git "C/*/($git_cmp)/" && complete gvdiff "C/*/($git_cmp)/" && git tree'
alias glp 'git log -p'
alias glogp 'git log -p'
alias gtreep 'git tree -p'
alias gd 'git diff'
alias gdt 'git difftool'
alias gdiff 'git diff'
alias gdifftool 'git difftool'
alias gvimdiff 'git difftool'
alias gvd 'git difftool'
alias gvdiff 'git difftool'
alias gsta 'git stash'
alias gstu 'git stash -u'
alias gstum 'git stash -u -m'
alias gstp 'git stash pop'
alias gmr 'git merge'
alias gls 'git log --name-status -n1 $1 | awk -F'\'' '\'' '\''{print $2}'\'';'
bindkey -s "^[u" "^Ucd ..\n"
bindkey -s "^[-" "^Ucd -\n"
bindkey ^P history-search-backward
bindkey ^N history-search-forward
# bindkey ^R i-search-back
bindkey ^I complete-word-fwd
bindkey ^[[Z complete-word-back
bindkey ^W backward-delete-word
# Compress
complete lha 'n/*/f:*.{lzh,LZH}/'
complete unzip 'p/*/f:*.{ZIP,zip}/'
complete gzip 'n/-d/f:*.{gz,Z,tgz,TGZ}/' \
'n/*/f:^*.{gz,Z,tgz,TGZ}/'
complete {gunzip,gzcat,zcat} 'n/*/f:*.{gz,Z,tgz,TGZ}/'
complete com{,press} 'n/*/f:^*.Z/'
complete unc{,ompress} 'n/*/f:*.Z/'
complete tar 'n/*/f:*.{gz,Z,tar.gz,tgz,TGZ,tar.bz2}/'
# Edit
complete {gnuplot,gp} 'n/*/f:*.{plt,gp}/'
complete 'ps?*' 'n/*/f:*.{ps,eps,PS,EPS}/'
complete 'tgif*' 'n/*/f:*.obj/'
complete {vi,vim,vimdiff,less,cat,head,tail} 'n/*/f:^*.{o,gz,zip,tar,a,so,pdf,png,jpg,crash,ac0,tr0,so.*}/' # except binary file
#software
complete hspice 'n/*/f:*.{sp}/'
# Job
complete ps 'n/-*u/u/'
complete {fg,bg,stop} 'c/%/j/ p/1/"(%)"//'
# Env
complete complete 'p/1/X/'
complete uncomplete 'n/*/X/'
complete alias 'p/1/a/'
complete unalias 'n/*/a/'
complete set 'c/*=/f/' 'p/1/s/=' 'n/=/f/'
complete unset 'n/*/s/'
complete env 'p/1/e/='
complete envg 'p/1/e/'
complete {set,print}env 'p/1/e/'
complete unsetenv 'n/*/e/'
# Daily command
complete {cd,chdir,pu,po} \
'p/1/d/' \
'n/-*/d/'
complete rmdir 'n/*/d/'
complete {,j}{man,whatis} 'n/-M/d/' \
'n/*/c/'
complete {which,where,strace,exec,trace} \
'p/1/c/'
complete find 'c/-/(print name type)/'
complete find 'n/-name/f/' \
'n/-type/(c b d f p l s)/' \
'n/-exec/c/' \
'c/-/(name type user size ctime mtime atime print exec )/' \
'n/*/d/'
complete chgrp 'p/*/g/'
complete chown 'p/*/u/'
# Remove
complete rm 'c/--/"(directory force interactive verbose recursive help version)"/' \
'n/*/f:^*.{c,cc,C,h,in,tex}/'
source ~/.cshrc-common
bindkey -s ^R "^Ufzf-history\n"
bindkey "^S" undefined-key
alias fd 'cd `dclean && cat ~/.cd_history |fzf --tac` && pwd -L'
alias fzf-history 'eval `history | cut -f3 | fzf --tac`'
alias ffh 'ssh `cat ~/.ssh/config | grep ^Host | cut -d" " -f2 | fzf --tac`'
alias ffhcd 'sshcd `cat ~/.ssh/config | grep ^Host | cut -d" " -f2 | grep -v aladdin | fzf --tac`'
alias fta 'tmux a -t `tmux ls | cut -d" " -f1 | sed "s/://g" | fzf --tac`'
.gitconfig
[user]
email = your@email
name = yourname
[credential]
helper = cache --timeout=86400
[core]
editor = vim
pager = less -i -M -R -Q -F -X
fileMode = false
[diff]
tool = vimdiff
[difftool]
prompt = false
[color]
ui = auto
[merge]
tool = vimdiff
[mergetool]
prompt = false
keepBackup = false
[alias]
tree = log --graph --pretty=format:'%C(yellow)%h%Creset -%C(red)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
st = status
a = add
aa = add -A
ap = add -p
b = branch
bd = branch -d
c = commit
cm = commit -m
co = checkout
cob = checkout -b
ps = push
pl = pull
l = log
lp = log -p
logp = log -p
treep = log --graph --pretty=format:'%C(yellow)%h%Creset -%C(red)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -p
d = diff
dt = difftool
vimdiff = difftool
vd = difftool
vdiff = difftool
sta = stash
stals = stash list
stu = stash -u
stum = stash -u -m
stp = stash pop
mr = merge
更新履歴
- 20250122 記事公開.dotfilesをコピペ.継ぎ足し継ぎ足しで書いているので後で整理.コメントや解説も後日.
研究発表・プレゼンテーションべからず集
はじめに
お久しぶりです.数か月間当ブログを放置していましたが,そろそろ書かなきゃいけないなと思っていたので義務で書いていきます.
大学院生活で,所属の研究グループで行われる進捗報告会や,他大学の先生や企業の方の講演,他大学の学生の発表などを多く見てきました. 中には「これはいいね」と思うような発表もあれば「これはマズいんじゃ」と思うような発表もあり,そろそろ目が肥えてきた頃だと思います(ほんまか?).
また,自身の登壇や原稿執筆で身に付けた話すスキル・書くスキルを何か形にしたいとも思っていたので, 「研究発表・プレゼンテーションべからず集」として個人的に研究発表・プレゼンテーションで推奨しない事柄をまとめていきます.
本記事の対象
- これから研究発表・プレゼンテーションなどで登壇する人
- 後で見返したい自分
言い訳 予防線 おことわり
本記事の内容は,筆者の専攻である電気電子工学の分野の流儀に準拠しており,また個人的な好みが多分に含まれています.
大目に見てください.
べからず集
以下,書きやすさのために常体で書く.
本べからず集では,各項目を筆者のキレ度🤬で評価する.キレ度🤬は5段階であり,おおよその目安は以下の通りである.
- キレ度1🤬
- あら?
- 正直あんまり気にしてない
- 各人の好み次第
- キレ度2🤬🤬
- まぁまぁ...
- ちょっと気になるけれど別に問題はない
- 治せば発表の質が上がってグッド
- キレ度3🤬🤬🤬
- ふーん...
- このあたりから聴講者の理解の妨げになってくる
- 締め切りが差し迫ってない限り治すべき
- キレ度4🤬🤬🤬🤬
- むっ
- 著しく聴講者の理解を妨げる
- これを放置して発表するのはまずい
- キレ度5🤬🤬🤬🤬🤬
- かっちーん!!!
- 存在自体が害悪
- 直ちにやめるべき
では,べからず集を書いていく.大きく,スライド構成篇と登壇中篇に分けているが,これらは無関係ではなく相互に影響しあうものなので,便宜的で適当な分け方ということに留意されたい.
スライド構成篇
スライドのページ番号は右下に書くべからず
- キレ度2🤬🤬
右下に小さく薄い文字でページ番号を表示している発表スライドが散見されるが,見づらい(見えない)ので意味がないし, スライド作成時にも図表と位置が干渉して邪魔になる.スライドの右上に大きく表示するべきだ.
また,ページ番号の表示は「現在ページ/全ページ数」とすると良い.(こいつの発表いつ終わんねん...)という不安を聴講者に抱かせずに済む. ゴール地点がわかっていると,そこから逆算して集中力のペース配分が出来るので,こういう心遣いはとても聴講者フレンドリー.
スライドに長々と文章を書くべからず
- キレ度4🤬🤬🤬🤬
原稿執筆のノリで発表スライドを作成すると,得てして長々と文章が書かれたスライドが出来てしまう.
スライドは原稿用紙ではないので,箇条書きや図表を駆使して効果的に発表すべし.文字だけのスライドはご法度. また,体言止めを使うことを意識すれば,長々と文章を書くクセを抑えられる.
「ご清聴ありがとうございましたスライド」を作るべからず
- キレ度5🤬🤬🤬🤬🤬
不要.限られた時間で情報を可能な限り伝えなけらばならないプレゼンテーションにおいて,内容のないスライドは不必要.
発表終了後には質疑応答が行われるのが常だが,質疑応答中に「ご清聴ありがとうございましたスライド」を表示していても無駄である. 質疑応答中は発表のまとめスライドを見せて,質問者が質問しやすいようにすべし.
色の数を徒に増やすべからず
- キレ度3🤬🤬🤬
とっちらかった配色は得てして見づらく,理解の妨げとなる. 用いる色は,
- 通常の文字で使う黒色
- 強調したい箇所などで用いるメインカラー
- メインカラーと対比的に用いたりさらに強調したいときに用いるアクセントカラー
の3色くらいが無難だと思う.
また用途も例えば
- グッドポイント・メリット・利点などはメインカラーの青
- 対比的に,バッドポイント・デメリット・欠点などはアクセントカラーの赤
といったように意味を限定して使うべし.青と赤は逆の流儀の人もいる.どちらがマジョリティかは知らない.
ハイコントラストな配色にするべからず
- キレ度1🤬
ハイコントラストなスライドは目が疲れるのでコントラストを下げるべし.くすんだ色を用いると目に優しい.
- 文字の色は真っ黒#000000ではなくこれくらいの黒色#444444(ブログ上では違いが分かりにくい)
- 背景の色は真っ白#FFFFFFではなくこれくらいの白色#BBBBBB(ブログ上では見づらい)
- メインカラーの青色は#0000FFではなくこれくらいの青色#204066
- アクセントカラーの赤色は#FF0000ではなくこれくらいの赤色#801E1E
がいいと思う.
ただし,これはプロジェクターで投影するか液晶で表示するか, 会場の照明の色,個々人の色覚など, 非常に多数の要素に左右されるので,気にしすぎるのもよくないと思う.
日本語フォントのアルファベットを使うべからず
- キレ度1🤬
游ゴシックなどの美しい日本語フォントですら,ビルトインしているアルファベットは微妙にダサい.英語にきちんと向き合っている欧文フォントを使うべし.
Windowsにデフォルトで入っている素晴らしい欧文フォントにSegoe UI がある.
日本語フォントのギリシャ文字を使うべからず
- キレ度3🤬🤬🤬
例えばアルファとかオメガとか入力してからギリシャ文字に変換できるが,アルファベット同様ダサいし,環境によっては文字化けが起きる可能性がある
Windowsに標準搭載されているギリシャ文字専用フォントのSymbolを使うべし.
図表で細い線を使うべからず
- キレ度4🤬🤬🤬🤬
グラフの軸やプロットデータが細かったり,表のグリッド線が細いと見づらい(見えない). 図表は研究発表の最も重要な部分であり,この部分が見づらい(見えない)と伝わるものも伝わらないので,大きく太く作図すべし.
登壇中篇
「○○させて頂きます」と言うべからず
- キレ度1🤬
「○○いたします」「○○します」と言おう. 「させて頂きます」は目上の人に許可をもらって何かを実行するときに使うべし.
主催者やその他関係者のおかげで自分は発表できているという信念・思想のもと, 「発表させていただきます」と言っているならいいと思う. でも,そこまで考えて「発表させていただきます」と言っている人はいないんじゃないか? 日常会話の話し言葉ならまだしも,研究発表の一言一句には敏感になり,言葉を大切に使うべきだ.
スライドを読み上げるだけの発表をするべからず
- キレ度3🤬🤬🤬
書いてあることを読むだけなら,聴講者各々がスライドを見れば済む話である. スライドには重要な図表や説明のみを表示し,口頭でそれらの行間を補完するように発表すべし.
「続いて○○についてお話します」と言うべからず
- キレ度3🤬🤬🤬
スライドのページをめくって「続いて○○についてお話します」,またページをめくって「次は▽▽についてお話します」,またページをめくって「お次に□□についてお話します」...
というように,スライドごとに話がブツ切りになっていると,スライドごとの関係やつながりが見えてこない.一つのストーリーを作るように,前のスライドのおしりと次のスライドの頭がつながるように構成するべし.
登壇者はフラフラするべからず
- キレ度2🤬🤬
発表内容に集中したいのに視界の端で登壇者がフラフラ動いていると気になるし,自信なさげで頼りない印象を受けてしまう.
せっかくの素晴らしい内容も(この発表たいしたことないんじゃね?)と,その素晴らしさが伝わりにくくなってしまうので,背筋を伸ばしてどっしりと構えることを意識すべきだろう.
登壇者はボソボソ喋るべからず
- キレ度4🤬🤬🤬🤬
ボソボソ喋ってるとそもそもの内容が聞き取れないので,もっとお腹から声をだすべし. また,マイクを過信するべからず.マイクは適切な距離・適切な声量でないと正しく拡声してくれない.
登壇する前に喉を慣らしておいたり,登壇直後にマイクテストをするのが肝要である.
レーザーポインターを不必要に振り回すべからず
- キレ度5🤬🤬🤬🤬🤬
注目点を指し示すためにレーザーポインターは頻繁に用いられるが, そもそも注目を集めたいなら,矢印で指し示したり丸で囲んだり資料の側を工夫するべきである. 不必要にレーザーポインターを振り回すのは端的に見づらいので,レーザーポインターは限定的に扱うのが良いだろう.
これだけならキレ度3🤬🤬🤬査定くらいであるが,人の目に入ると危険なのでキレ度5🤬🤬🤬🤬🤬査定. 直ちにやめるべきだと思う.
どうしても使いたいならPowerPointなどのプレゼンテーションソフトに組み込まれているソフトのレーザーポインターを利用するべし.
おわりに
本記事では,筆者がスライド作成や発表登壇中に意識していることを思いつく限り書きました.また思いついた内容があったり,あたらしい気づきがあった場合は適宜修正していきたいです.数年後に見返したときに黒歴史となっていないか心配です.
再度予防線を張っておきますが断っておきますが,これは筆者の専攻である電気電子工学の分野の流儀や筆者個人の好みが多分に含まれているため,鵜呑みにしないでほしいです.
次は最近読んだ本の感想とかを記事にしていけたら楽しいかなと思っています.
ブログ開設
はじめに
X(旧Twitter)(←これ言いたいだけ)で独り言をぶつぶつと書き連ねていては,自分のポストを見た人に変なヤツだと思われるし,文字数制限も煩わしいので,この用途ではSNSよりブログのほうが良いと思い開設することにした.
まずは三日坊主にならないように日記程度のつもりで記事を書いていこうと思う.
初めての投稿記事なので,ブログ名の由来と,ブログを書く目的について書く.
ブログのタイトルの由来
田園で世間のわずらわしさを離れて、心穏やかに暮らすこと。晴れた日には田畑を耕し、雨の日には家に引きこもって読書する意から。
自分の力ではどうしようもない社会問題から自分の身の回りの諍いまで,俗世には煩悩が多すぎる. 中高生くらいまでなら気づかない振りをできていたが,そろそろ一人の人間として向き合わなきゃいけないという自覚もある.
毎日の生活ではそれらの煩悩に頑張って向き合いつつも,心穏やかに文化的に過ごしたいというささやかな願いを込めて,晴耕雨読というタイトルにした.
ブログを書く目的
日記程度のつもりとはいえ,目的意識に欠けていては砂上の楼閣となるので,まずはブログを書く目的を定め,以降の記事を執筆する際の指針とする.
文章力向上
そもそも長い文章を書くことに慣れておらず,また,論理の包含や話の流れを意識しながら構成・章立てを考えるのが苦手なので,ブログを通して文章を書く練習をする.
センター国語119点だし,学会の予稿や卒論で厳しい添削や指導があったし,これを機に長い文章を書くのに慣れたい.
ちなみに,文章力向上を焦点にあてた書籍として,以下のようなものを読んだことがある.いずれも名著で評価が高く, 文章を書く際の心強い柱となるのでぜひ読んでみてほしい.
思想デトックス
基本的に内向的で,他者と意見を交わすことの少ない生活なので,頭の中でグルグルと自分の考えを巡らせているばかりである. ブログという形で自分の考えや思想を吐き出す場を作ることで,"思想デトックス"を行う.
過去の記事を見直して,自分の考えや思想の変化を自覚出来たら楽しいのかもしれない.黒歴史と紙一重であるとも思う.
日記・メモ
味のしなくなったガムのような,無味乾燥で代わり映えのない生活ばかりを送っているので,レアな出来事や重大なイベントの後は折に触れて書いていきたい.趣味のゲームや音楽,漫画などについても感想とか書けたら善き生活を過ごせそうである.
思いついたアイデアや知見もメモとして残しておけたら,自分が後で参照出来て便利だし,有用な知識を備忘録として残す謎の個人ブログの立ち位置もほしいままとできるかもしれない.
おわりに
本記事ではブログを書く目的について,徒然なるままに,PCに向かいて心にうつりゆくよしなしごとを,そこはかとなくタイピングしつくった.
とにかく,まずは三日坊主にならないようにしたい.
コメントも随時受付中,LINEやDMの返信は遅いけれど,コメントの返信は頑張ろうと思う.

