1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(開発6)vim+tmux環境の構成

Last updated at Posted at 2024-09-11

■概略

オープンソースエンジニア歴30年超の筆者が2023年からIBMiを学びだした学習記録です
IBMiの開発環境をvim+tmuxで構築します
筆者はあまりSEUに詳しくありませんが、行単位でコピー&ペーストできるところとか、
I{数字}で行の挿入ができるところとかvimに通じるところがあると感じています
SEUユーザはVSCodeよりvimの方が馴染むのでは…?(ちょっと無理やりかも…)

■vim+tmuxの使い方

1) starttmux.bash(後述)を起動すると以下の画面になる

筆者はWindows Terminalでフォント大きめ、1つ目のタブでvim+tmux、
2つ目をコンパイル用で開いている

$ ./starttmux.bash

vim+tmux01.png

2) windowの切り替え

[Ctrl-e]+[w] で下記windowの切り替え画面が表示される
[k] で上 [j]で下に移動し、[enter]で切替えるwindowを選択する
筆者はQFFRPG編集用、bashスクリプト編集用、git作業用、md(README.md等)用の
windowを用意している
bashスクリプト実行用はコンパイルリストが長くスクロールが必要なので別タブに
している

vim+tmux02.png

3) vimの起動とvimfilerの起動

windowを切り替えたら、vimを起動する

$ vim

vim内で :e . でvimfilerを起動すると以下の画面になり選択したファイルを開ける

:e .

vim+tmux03.png

◯vimfilerの操作

キー 操作内容
h 親ディレクトリに移動
t ディレクトリを展開
[enter] ファイルを開く/ディレクトリに入る
N ファイルを新規作成
K ディレクトリを新規作成
cc ファイルをコピー
r ファイルをリネーム

4) vimの操作

vimmerはそれぞれの操作を持っているが、筆者のよく利用する操作は以下
特に左右分割が便利

■vimの操作

キー 操作内容
h 親ディレクトリに移動
hjkl カーソル移動
yyかy{n}y コピー
p ペースト
[shift]-[k]か[j] 行選択
[Ctrl-v]-[h][j][k][l] 矩形選択
^ 行先頭移動
$ 行末移動
:1 ファイル先頭移動
G ファイル末尾移動
:set number 行番号表示
:vs 左右分割
[Ctrl-w]-[h]か[l] 左右ペイン移動
:sp 上下分割
[Ctrl-w]-[j]か[k] 上下ペイン移動
:q ペイン終了

5) tmuxを抜ける

[Ctrl-e]+[d] でtmuxを抜け、$に戻るのでログアウト等する

6) 再度ログインし、tmuxに接続する

再度sshログインし $ になったら、以下コマンドで残っているtmuxセッションに
再接続する

$ tmux a -t as400dev

7) RPGLEソース(桁位置固定)を開いた時

VSCodeで縦線を表示したように、vimでも縦線を表示できる
vim+tmux04.png

◯設定手順
~/.vim/ftdetectディレクトリに各拡張子用の設定を作成する

{ユーザ}@as400dev:~/.vim/ftdetect$ pwd
/home/{ユーザ}/.vim/ftdetect
{ユーザ}@as400dev:~/.vim/ftdetect$ ls
clp.vim  rpg.vim  rpgle.vim

clp.vim

" my filetype file
augroup filetypedetect
    au! BufRead,BufNewFile *.clp          setfiletype clp
    au! BufRead,BufNewFile *.CLP          setfiletype clp
    au! BufRead,BufNewFile *.clle         setfiletype clp
    au! BufRead,BufNewFile *.CLLE         setfiletype clp
augroup END

rpgle.vim

" my filetype file
augroup filetypedetect
    au! BufRead,BufNewFile *.rpgle        setfiletype rpgle
    au! BufRead,BufNewFile *.sqlrpgle     setfiletype rpgle
    au! BufRead,BufNewFile *.RPGLE        setfiletype rpgle
    au! BufRead,BufNewFile *.SQLRPGLE     setfiletype rpgle
augroup END

.vimrcにどの桁位置に色をつけるか設定する

" ### 縦線を引く
autocmd FileType clp   set colorcolumn=14,70
autocmd FileType clp   highlight ColorColumn term=reverse ctermfg=white ctermbg=2
autocmd FileType rpgle set colorcolumn=6,12,26,36,50,68,81
autocmd FileType rpgle highlight ColorColumn term=reverse ctermfg=white ctermbg=2

■vimの設定

筆者は古い人なのでNeoBundleを今でも使っています

1) /home/{ユーザ}/.vimrcに以下を作成する

set enc=utf-8
set fenc=utf-8
set nobackup
set noswapfile
set ambiwidth=double
set paste

" ### 縦線を引く
autocmd FileType clp   set colorcolumn=14,70
autocmd FileType clp   highlight ColorColumn term=reverse ctermfg=white ctermbg=2
autocmd FileType rpgle set colorcolumn=6,12,26,36,50,68,81 
autocmd FileType rpgle highlight ColorColumn term=reverse ctermfg=white ctermbg=2

" #### ステータスライン
" 現在列数
set statusline=[COL=%c]\ 
" ファイル名
set statusline=%F
" 変更チェック表示
set statusline+=%m
" 読み込み専用かどうか表示
set statusline+=%r
" ヘルプページなら[HELP]と表示
set statusline+=%h
" プレビューウインドウなら[Prevew]と表示
set statusline+=%w
" これ以降は右寄せ表示
set statusline+=%=
" file encoding
set statusline+=[ENC=%{&fileencoding}]
" 現在行数/全行数
set statusline+=[LOW=%l/%L]
" ステータスラインを常に表示(0:表示しない、1:2つ以上ウィンドウがある時だけ表示)
set laststatus=2

" #### NeoBundle用設定
if has('vim_starting')
   " 初回起動時のみruntimepathにneobundleのパスを指定する
   set runtimepath+=/home/{ユーザ名}/.vim/bundle/neobundle.vim/
endif

" NeoBundleを初期化
call neobundle#begin(expand('/home/{ユーザ名}/.vim/bundle/'))

"""" インストールするプラグインをここに記述
" vimfiler {{{
    NeoBundle 'Shougo/vimfiler'
    "vimデフォルトのエクスプローラをvimfilerで置き換える
    let g:vimfiler_as_default_explorer = 1
    "セーフモードを無効にした状態で起動する
    let g:vimfiler_safe_mode_by_default = 0
    "現在開いているバッファをIDE風に開く
    nnoremap <silent> [unite]i :<C-u>VimFilerBufferDir -split -simple -winwidth=35 -no-quit<CR>

    "デフォルトのキーマッピングを変更
    augroup vimrc
        autocmd FileType vimfiler call s:vimfiler_my_settings()
    augroup END
    function! s:vimfiler_my_settings()
        nmap <buffer> <ESC> <Plug>(vimfiler_exit)
        nmap <buffer> q <Plug>(vimfiler_exit)
        nmap <buffer> Q <Plug>(vimfiler_hide)
    endfunction
"}}}

" vim-indent-guides {{{
    NeoBundle "nathanaelkane/vim-indent-guides"
    colorscheme default
    set tabstop=4
    set expandtab
    set shiftwidth=4
    let s:hooks = neobundle#get_hooks("vim-indent-guides")
    let g:indent_guides_enable_on_vim_startup=1
    function! s:hooks.on_source(bundle)
        let g:indent_guides_guide_size = 1
    endfunction
" }}}

call neobundle#end()
""""
" NeoBundleの後に必要な設定
filetype plugin indent on
syntax on

2)NeoBundleインストール

$ mkdir ~/.vim
$ mkdir ~/.vim/bundle
$ git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

3) NeoBundleプラグイン(vimfiler他)をインストール

$ vim (NeoBundleを設定したユーザで起動する)
:NeoBundleInstall

4) vimのRPGのハイライト

https://github.com/paulpritchard68/VimRPG
上記をダウンロードし、zipを展開して~/.vimに置く
以下のようになるはず

.vim
└── syntax
    ├── clp.vim
    └── rpgle.vim

■tmuxの設定

1) /home/{ユーザ}/.tmux.confを作成する

# キーバインドをC-eに変更する
set -g prefix C-e
unbind C-b
# bind C-e send-prefix

#set-option -g allow-rename off
## ステータスバー全体の設定
# 256色端末を使用する
set-option -g default-terminal screen-256color
# ステータスバーのUTF-8サポートを有効にする
set -g status-utf8 on
# リフレッシュの間隔(デフォルト 15秒)
set -g status-interval 60

## 左パネル
# 左パネル(ホスト名:[セッション名])
set -g status-left-length 40
set -g status-left '#[fg=black,bg=cyan,bold]#H#[fg=black]:#[fg=black][#S]#[default]'

## ウィンドウリスト
set-window-option -g automatic-rename off
set-window-option -g allow-rename off
# ウィンドウ名をstarttmux.bashで指定した名前から変えない
set-window-option -g automatic-rename off
set-window-option -g allow-rename off
# ウィンドウのインデックスを1から始める
set -g base-index 1
# ウィンドウリストの位置を中心寄せにする
set -g status-justify centre
# window-status のフォーマットを指定する。
set-window-option -g window-status-format "#[fg=colour255,bold] #I #[default]"
# ウィンドウリストの位置を左寄せにする
set -g status-justify left
# カレントウィンドウの window-status のフォーマットを指定する
set-window-option -g window-status-current-format "#[fg=colour255,bg=colour27,bold] #I #W #[default]"

## 右パネル
# 右パネル(日時)
set -g status-right '#[fg=black,bg=cyan,bold] [%Y-%m-%d(%a) %H:%M]#[default]'

2) tmuxの起動スクリプトstarttmux.bashを作成する

/home/{ユーザ}/starttmux.bashを作成する
src1,src2や$DIR,$DIR/srcは自分の環境に合わせて変更する

#!/bin/bash
#
# stop exist tmux
kill `ps axuw|grep 'tmux new'|awk '{print $2}'`
# start tmux
DIR="/home/{ユーザ}/"
tmux new-session -n 'bash  ' -d -s as400dev "bash"
tmux new-window  -n 'git   ' -c "$DIR" "bash"
tmux new-window  -n 'build ' -c "$DIR" "bash"
tmux new-window  -n 'src1  ' -c "$DIR/src" "bash"
tmux new-window  -n 'src2  ' -c "$DIR/src" "bash"
tmux new-window  -n 'src3  ' -c "$DIR/src" "bash"
tmux new-window  -n 'src4  ' -c "$DIR/src" "bash"
tmux attach -t as400dev

作成後以下で実行権限を付与する

$ chmod +x starttmux.bash
1
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?