Fernに関するちょっとした話
Fernの作者によるこれを読んで、VimのファイラーをNERDTreeからFernに変えてみようと思った時に起こったちょっとした話
.vimrc
call jetpack#begin()
Jetpack 'lambdalisue/fern.vim'
call jetpack#end()
syntax on
filetype plugin indent on
""" Fern
" Show hidden files
let g:fern#default_hidden=1
" Show file tree with Ctrl+n
nnoremap <C-n> :Fern . -reveal=% -drawer -toggle -width=40<CR>
" Color
colorscheme abstract
FernはCtr
+ n
[1]でドロワーとして開くようにしている。
ツリーのノードに^_
がくっつく
Macのターミナルだとなんかこんな感じでファイルツリーの最後に^_
が表示される。
home
|- Projects/^_
|+ specreq/^_
|- tools/^_
| myip.sh^_
| pass.rb^_
理由はMacのデフォルトのvimはconceal
を無効にしてビルドされているから。ビルドし直せば^_
は消える[2]。私はHomebrewで以下のように。vim --version
すれば何が有効になっているかはわかる。vimのパスが変わるので注意。
brew intall vim --build-from-source
ツリーの左側の色
カラースキームによってはツリーの左側の色に違和感があるかもしれない。どこのことを言ってるのかわかりやすくするためにわざと白くしてみた。
ひとまず今の定義を確認してみる。vimを開いて:hi
とやるだけ。
これ自体は~/.vim/colors
にあるカラースキームの定義ファイル(ハイライトグループというらしい)を表示しているだけのはず。でも、ツリーの横の部分ってどこを書き換えたらいいの...?
と思っていたら、カーソルのあるところのカラースキームの定義を教えてくれるvim関数に出会った。以下を.vimrc
に書いて、色ついているところにカーソル合わせて、:SyntaxInfo
を叩くと下の方にハイライトグループが表示されるのでそこを書き換えればよい。
function! s:get_syn_id(transparent)
let synid = synID(line("."), col("."), 1)
if a:transparent
return synIDtrans(synid)
else
return synid
endif
endfunction
function! s:get_syn_attr(synid)
let name = synIDattr(a:synid, "name")
let ctermfg = synIDattr(a:synid, "fg", "cterm")
let ctermbg = synIDattr(a:synid, "bg", "cterm")
let guifg = synIDattr(a:synid, "fg", "gui")
let guibg = synIDattr(a:synid, "bg", "gui")
return {
\ "name": name,
\ "ctermfg": ctermfg,
\ "ctermbg": ctermbg,
\ "guifg": guifg,
\ "guibg": guibg}
endfunction
function! s:get_syn_info()
let baseSyn = s:get_syn_attr(s:get_syn_id(0))
echo "name: " . baseSyn.name .
\ " ctermfg: " . baseSyn.ctermfg .
\ " ctermbg: " . baseSyn.ctermbg .
\ " guifg: " . baseSyn.guifg .
\ " guibg: " . baseSyn.guibg
let linkedSyn = s:get_syn_attr(s:get_syn_id(1))
echo "link to"
echo "name: " . linkedSyn.name .
\ " ctermfg: " . linkedSyn.ctermfg .
\ " ctermbg: " . linkedSyn.ctermbg .
\ " guifg: " . linkedSyn.guifg .
\ " guibg: " . linkedSyn.guibg
endfunction
command! SyntaxInfo call s:get_syn_info()
ちなみに出典はここ
これはめっちゃ便利な関数だったが、なぜかツリーの左側の部分だけはカーソルで選択できないので使えなかった。その後、いろいろ触っていてここのハイライトグループはSignColumn
だとわかった。
ということで、今回かえたのはターミナルのツリーの左端のカラムの色とディレクトリの色
"hi Directory ctermfg=62 ctermbg=NONE cterm=NONE guifg=#5A5AE6 guibg=NONE gui=NONE
hi Directory ctermfg=229 ctermbg=NONE cterm=NONE guifg=#FEF29E guibg=NONE gui=NONE
"hi SignColumn ctermfg=246 ctermbg=235 cterm=NONE guifg=#909194 guibg=#2E2F31 gui=NONE
hi SignColumn ctermfg=246 ctermbg=0 cterm=NONE guifg=#909194 guibg=#2E2F31 gui=NONE
ちなみにこれらはvimのコマンドなので、:hi Directory ctermfg=**
とかで色を一時的にあてて試してみることができる。
あと、いじっているとカラースキームがおかしくなることがある。その場合はカラースキームを以下のようにリロードするとよい。
:source ~/.vim/colors/molokai.vim
Fernのよく使うショートカット
-
j
k
- ツリー上でカーソルを上下に動かす -
l
- ノードを選択、h
- もとに戻る -
N
- 新しいファイルを作成 -
K
- 新しいディレクトリを作成 -
R
- ノードをリネーム
... 習得中
その他の参考になりそうなサイト
これもいい情報が満載
まとめ
Fernはいいぞ。
Author And Source
この問題について(Fernに関するちょっとした話), 我々は、より多くの情報をここで見つけました https://zenn.dev/masaino/articles/83e3f5ca155b9e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol