#completeslash
Explore tagged Tumblr posts
mattn · 5 years ago
Text
ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版
はじめに
以下の記事では、僕の Vim の構成について記述しています。本来はこの記事で vim-lsp の導入方法と私的 Go 編集環境について書こうと思っていましたが、あまりにも長くなってしまったので別途書く事にしました。僕は Windows と Linux しか使わないので、皆さんの環境で使うとうまく動かない可能性があります。また僕は最新の Vim 8 しか使いません。古めの Vim を使いません。neovim も使いません。それらをお使いの方はうまく動かない可能性があります。ご了承下さい。なお設定ファイルの配置スタイルは完全に僕個人の趣味ですので必ずしも僕の構成が正しい訳ではありません。
ぼくのかんがえたさいきょうの Vim こうせい
Vim の設定は vimrc に記述するのですが、その設定方法には「汚くさせない」ための工夫が必要だと思っています。以下は僕が行っている「vimrc を綺麗に保つ方法」です。
vimrc に記述する内容は大きく分けて以下の物があります。
Vim 本体の機能のデフォルト値を変更する設定
プラグインの読み込み
ユーザ固有のマッピングやコマンドの定義
プラグイン固有の設定
これは上記の順で書くのが良いと思います。幾らか例外はありますが、おおよそ上記の流れで書くのが良いと思います。今回、僕の vimrc を公開はしませんが、おおよそこの流れに沿っていると思って下さい。なぜ公開しないのかというと、日々スタイルを模索してどんどん変わっていく為、今回ここで紹介した物が僕の vimrc だと広まって欲しくないからです。また好き嫌いはあると思うのですが、僕は最近は分割 vimrc 形式を使っています。
vimfiles ├─vimrc ├─gvimrc ├─autoload/ ├─plugged/ └─_config/
autoload には後で述べる vim-plug の plug.vim しか入っていません。上記のリストの内、1と2は vimrc および gvimrc に記述しています。残りは全て _config というフォルダ内に、各機能毎に分けて記述しています。以下は僕の vimrc の概要です。
" Vim 本体の機能のデフォルト値を経項する設定 setglobal cmdheight=2 setglobal laststatus=2 ... 略 ... setglobal fileformat=unix setglobal formatoptions+=mb if !has('win32') && !has('win64')   setglobal shell=/bin/bash endif if exists('&termguicolors')   setglobal termguicolors endif if exists('&completeslash')   setglobal completeslash=slash endif let g:no_gvimrc_example=1 let g:no_vimrc_example=1 let g:loaded_gzip               = 1 let g:loaded_tar                = 1 let g:loaded_tarPlugin          = 1 let g:loaded_zip                = 1 let g:loaded_zipPlugin          = 1 let g:loaded_rrhelper           = 1 let g:loaded_vimball            = 1 let g:loaded_vimballPlugin      = 1 let g:loaded_getscript          = 1 let g:loaded_getscriptPlugin    = 1 let g:loaded_netrw              = 1 let g:loaded_netrwPlugin        = 1 let g:loaded_netrwSettings      = 1 let g:loaded_netrwFileHandlers  = 1 let g:did_install_default_menus = 1 let g:skip_loading_mswin        = 1 let g:did_install_syntax_menu   = 1 "let g:loaded_2html_plugin       = 1 let g:mapleader = '\' let g:maplocalleader = ',' " git commit 時にはプラグインは読み込まない if $HOME != $USERPROFILE && $GIT_EXEC_PATH != ''   finish end " Windows の場合は必要なパスを追加しておく if has('win32')   let $PATH='c:\dev\vim;c:\msys64\mingw64\bin;c:\msys64\usr\bin;'   \ .'c:\Program Files\Java\jdk1.8.0_221\bin;'.$PATH endif " プラグインの読み込み let g:plug_shallow = 0 call plug#begin('~/.vim/plugged') Plug 'thinca/vim-ambicmd' Plug 'thinca/vim-openbuf' Plug 'thinca/vim-quickrun' ... 略 ... call plug#end() " 各種設定の読み込み call map(sort(split(globpath(&runtimepath, '_config/*.vim'))), {->[execute('exec "so" v:val')]})
これを $HOME/.vim、Windows であれば %USERPROFILE%\vimfiles の中に vimrc というファイル名で置いています。便宜上、vimfiles を Windows のシンボリックリンクを使って .vim にリンクさせています。
気を付けるべきはこの状態を常に保つ事です。これは vimrc だけでなく .emacs.el 等にも言える事ですが、「ちょっと今だけ」と vimrc に手を加えた設定は、おそらく数か月後もそのままになってしまう可能性があるからです。綺麗な vimrc を保ち続けたいのであれば、この形は崩さない事です。
またなぜ僕がこの形にしているかというと、機能単位またはプラグイン単位で設定ファイルを消せるからです。必要なくなったプラグインの設定が vimrc に残ったままだと、どんどん汚くなってしまいます。必要に応じて消していくのも、vimrc を綺麗に保つ秘訣です。これは僕が2015年から SoftwareDesign の連載「Vim の細道」を書く上で毎月 vimrc を継ぎ足ししているうちに、どうしても vimrc が汚くなってしまった問題を解決する為に行き着いた方法です。
Vim 本体の機能のデフォルト値を変更する設定
ここで僕が言える事は「これらの設定をばらまかない事」。これらの設定は今後どんな新しいプラグインが出てきたとしても変わらない設定であるはずです。
プラグインの読み込み
僕は vim-plug というプラグインマネージャを使っています。他のプラグインマネージャを使っている方もいると思います。ちなみに僕も vim-plug に満足している訳ではなく、現在は minpac に移行しようか検討中です。
ユーザ固有のマッピングやコマンド定義
これ以降は、ユーザ固有のマッピングやコマンド定義、プラグイン固有の設定、の2つとなりますが、これらは個別の設定ファイルに書いています。例えば僕は _config ディレクトリの下に以下の様に配置しています。
000-mappings.vim 001-filetype.vim 002-commands.vim 003-path.vim 102-autofmt.vim 104-conda.vim 105-ctrlp.vim 106-emmet.vim 107-lightline.vim 200-lsp.vim 201-languageclient-nvim.vim 202-vsnip.vim 204-quickrun.vim 300-vim.vim 301-java.vim 400-memolist.vim 401-openbrowser.vim 402-previm.vim 403-termdebug.vim 404-tohtml.vim 405-twitvim.vim
おおよそ番号体系があって、000番台が Vim 本体に関する物、100番台が全体に関わるプラグインの設定、200番台以降がプラグインの設定ですがその中でもグローバルに適用される物、300番台がファイルタイプに関連する物、400番台がアプリケーションに関する物、となっています。この番号体系は完全に守れている訳ではないです。
ユーザ固有のコマンド定義では、コマンドの実行可否を利用するのが良いと思います。例えば外部コマンド foo が存在しない場合にユーザ定義コマンドを定義したくない場合には以下の様にファイルの先頭に書きます。
if !executable('foo')   finish endif
プラグイン固有の設定
上記のリストで、番号が飛んでいるのに気付いたかもしれません。以前は使っていたけれど不要になったので消した為です。これにより、プラグインを足したり消したりする際にゴミが残ってしまう問題を解決しました。
これらの設定で注意する事は、プラグインの有無をチェックする事です。プラグインをチェックする為には、globpath 関数を使ってスクリプトの存在を確認する方法を使います。
例えば vim-lsp の設定ファイル 200-lsp.vim の先頭には以下の様に書いています。
if empty(globpath(&rtp, 'autoload/lsp.vim'))   finish endif
こうする事で、vimrc の Plug 行をコメントアウトしても正常に Vim が起動できる様になります。例えば何かの拍子に環境が変わり、プラグインが正常に動作しなくなった場合には、そのプラグインを読み込みを停止してしまえば合わせて設定も無効になってくれる、という仕組みです。
おわりに
以上が、次第に汚くなりがちな vimrc を綺麗に保つために僕が行き着いた方法です。個人的な趣味ですので、皆さんには合わないかもしれませんが、幾らかは盗んで頂ける物があるかもしれません。 from Big Sky https://ift.tt/2Q8SAf0
3 notes · View notes
alltimefanfiction · 2 months ago
Link
Jack and Zack, both college students, have been casually seeing each other, enjoying a no-strings-attached relationship. As they are long time family friends and both ended up going to UCLA.
However, things take an unexpected turn when Zack, confesses his love for Jack. Panicked and realizing he doesn’t reciprocate those feelings, Jack flees and Zack comes by his dorm room the next day.
Jack decides to pretend he’s dating his roommate, Alex, with whom he shares a dorm room.
Jack convinces Alex to join the annual family vacation that both his and Zack’s families attend every spring break. During the vacation, Jack and Alex, while pretending to be a couple, start to develop genuine feelings for each other.
Meanwhile, Zack makes several attempts to win Jack over. As the vacation progresses - Jack struggles with the growing love for Alex and his desire to maintain his friendship with Zack. In the end, true feelings are revealed, and Jack discovers where his heart truly belongs.
0 notes
alltimefanfiction · 1 year ago
Link
Alex is really bad with feelings and Jack’s a bit insecure.
0 notes
alltimefanfiction · 2 years ago
Link
Alex Gaskarth is a nineteen year old college freshman, living life the way he wants. One night, one decision, will make all the difference.
SEQUEL: Redefining Love
It's October. Brendon and Ryan’s wedding is in January, four months away. That leaves plenty of time for things to get out of control.
Kyle comes around with a new boyfriend.
Caleb can’t seem to move on.
Gabe and William are still working though the beginnings of their relationship.
Sisky and Butcher seem fine on the outside, but everyone knows that’s not the case behind closed doors.
Rian and Zack are young and are just bound to make mistakes.
And, Jack and Alex are dealing with their own problems - from Jasey’s breathing difficulties to Jack’s ex-boyfriend reappearing.
Everything needs to be dealt with and smoothed over by the time January rolls around. Because the last thing any of them want is to ruin their best friends’ wedding.
SEQUEL: Here’s My Heart
“I don’t pretend to know what love is for everyone, but I can tell you what it is for me; love is knowing all about someone, and still wanting to be with them more than any other person. Love is trusting them enough to tell them everything about yourself, including the things you might be ashamed of. Love is feeling comfortable and safe with someone, but still getting weak knees when they walk into a room and smile at you.”
4 notes · View notes
alltimefanfiction · 4 years ago
Link
When Alex turns up on Jack’s doorstep at eleven thirty at night, Jack’s quick to let the older boy inside, his teeth clamped to his bottom lip and his face drawn into a worried expression.
1 note · View note
alltimefanfiction · 5 years ago
Note
Do you remember that fan fic where alex and kellin are bffs and they date older guys & keep it a secret from them. jack dates alex & kellin dates vic. i don’t remember much else from it hahah
I don’t know it… do any of our followers? 
=addy
An anon pointed us to What’s My Age Again? (+ sequel We’ve Got Unfinished Business) because it sounds very similar but the characters are the other way around -- it’s Jack and Kellin who are BFFs and date older men.
Thanks to the anon! Hopefully it’s right. 
- Eve
11 notes · View notes
alltimefanfiction · 4 years ago
Link
Alex was a creator, until his muse died, along with his brother. His world is bleak and dark; so how could Jack, a destroyer, possibly put Alex's life back together?
Alex was a creator.
Jack was a destroyer. Together, they create a beautiful disaster.
livejournal link
1 note · View note
alltimefanfiction · 5 years ago
Link
All Alex Gaskarth has ever wanted is to play music for people, he's always written his own stuff and played the small circuit in Baltimore, Maryland -- but after figuring that it would never happen, he gave up and got a day job.
Jack Barakat is one of the most well known musicians across the United States of America, he's toured with the likes of Green Day, Fall Out Boy and Jimmy Eat World, and written for so many other artists.
What happens when they run into each other at Alex's dead end job? Will their friendship be a bed of roses or end in calamity?
2 notes · View notes
alltimefanfiction · 5 years ago
Link
“I know you have a lot of secrets – and I’m not asking you to tell me all of them, okay? Just answer me one question. Did you want me to kiss you on Saturday?” Zack blinks a few times more than necessary and slowly nods. “Yeah… I did.”
2 notes · View notes
alltimefanfiction · 6 years ago
Link
Alex wishes he wasn't popular. If he wasn't, it wouldn't matter if he was gay, and being in love with Zack wouldn't matter either.
5 notes · View notes
alltimefanfiction · 6 years ago
Link
Jack Barakat remembers exactly how he fell for his best friend.
not my fic
4 notes · View notes
alltimefanfiction · 6 years ago
Link
Can Jack manage to get Zack to sleep with him in less than a week?
2 notes · View notes
alltimefanfiction · 6 years ago
Link
Starting over is never easy...
PREQUEL: Dirty Little Secrets
CLICK FOR SEQUEL
3 notes · View notes
alltimefanfiction · 5 years ago
Link
The hardest part of being in a serious relationship is taking that next big step -- whatever it may be. For example, moving in together or starting a family. With those steps comes the realization that maybe -- just maybe -- you're moving too fast. Or, worst of all, maybe you're not supposed to be with each other at all.
CLICK FOR PREQUEL
1 note · View note
alltimefanfiction · 6 years ago
Link
She was glowing. Make up perfect and a veil tossed a top her styled soft curls. Alex was smiling as she gracefully made her way down, eyes locked on one another.
It was natural of course, something almost known for a decade now, that they would end up here. No matter how much I smile, though, my eyes never corresponded with sincerity. My eyes were too busy watching the bitter sweet event before me, before all our friends and family.
If this is what Alex wants, there is not much I can do, right?
There is not much I should do, but play along and congratulate the newly weds.
2 notes · View notes
alltimefanfiction · 6 years ago
Link
It’s hard watching a man you barely know constantly getting rejected.
It’s harder when he’s now your best friend and you watch this each weekend.
It’s hardest when you balance between loving him and hating yourself while watching.
And. It. All. Sucks.
1 note · View note