Vim

【一人 vimrc advent calendar 2017】現在のファイル名を変更する【12日目】

Vim

一人 vimrc advent calendar 2017 12日目の記事になります。 今回は個人的に使う機会が多い簡単な Ex コマンドの紹介でも。 現在開いているファイル名を変更する さて、Vim を使っていると『現在開いているファイル名を変更したい』ということが稀によくある…

【一人 vimrc advent calendar 2017】filetype 名を簡略化する【11日目】

Vim

一人 vimrc advent calendar 2017 11日目の記事になります。 今回は頻繁に手入力するコマンドを簡略化するというお話です。 Vim で filetype を設定する Vim で雑なコードを書く場合に無名バッファを使うことがあります。 そういう場合は新しいバッファを開…

【一人 vimrc advent calendar 2017】タブ文字を視覚化する【10日目】

Vim

追記 set list は既定値が off なので一緒に書いてあってもいいんじゃないかな〜と思った【一人 vimrc advent calendar 2017】タブ文字を視覚化する【10日目】 https://t.co/41efnJ5nz7— ryunix (@ryunix) 2017年12月10日 全く持ってそのとおりなので追記し…

【一人 vimrc advent calendar 2017】第7回 学生エンジニア限定LT大会!!!で Vim を布教してきた【9日目】

一人 vimrc advent calendar 2017 9日目の記事になります。 学生ではないんですが、学生エンジニア限定LT大会で発表してきました。 と、いうか前日まで行くかどうするか悩みまくって申し訳ない Vim の布教 https://osyo-manga.github.io/slide-gakusei_LT-vi…

【一人 vimrc advent calendar 2017】markdown 内のコードをハイライトする【8日目】

Vim

一人 vimrc advent calendar 2017 8日目の記事になります。 今回のネタは前から設定は知っていたけど放置してて、いざ設定してみたらめちゃくちゃ便利だたというやつです。 markdown 内のコードをハイライトする さて、markdown では以下のようにコードを記…

【一人 vimrc advent calendar 2017】ディレクトリをオプションに設定した場合にディレクトリも生成する【7日目】

Vim

一人 vimrc advent calendar 2017 7日目の記事になります。 'backupdir' や 'undodir' などでディレクトリを設定する場合の注意 さて、、Vim では 'backupdir' や 'undodir' などディレクトリを設定するオプションがいくつかあります。 "バックアップファイ…

【一人 vimrc advent calendar 2017】vimrc で起動時にのみ実行するスクリプトを記述する【6日目】

Vim

一人 vimrc advent calendar 2017 6日目の記事になります。 vimrc で環境変数などに追記する設定を記述する さて、以前『vimrc で安全に autocmd を設定する』記事でも書いたのですが、vimrc は再読込される可能性を考慮する必要があると書きました。 同様に…

【一人 vimrc advent calendar 2017】Windows ライクなキーマッピングを使う【5日目】

Vim

一人 vimrc advent calendar 2017 5日目の記事になります。 今回は Windows ライクなキーマッピングのお話。 Vim でも Windows ライクなキーマッピングを行いたい さてさて、Windows ユーザが Vim を使うとお馴染みの Ctrl + x:切り取り Ctrl + c:コピー C…

【一人 vimrc Advent Calendar 2017】vimrc から別のスクリプトファイルを読み込む【4日目】

Vim

一人 vimrc Advent Calendar 2017 4日目の記事になります。 今回は vimrc から別のスクリプトファイルを安全に読み込みます。 任意のスクリプトファイルを読み込む さて、vimrc が少し大きくなってくると プラグイン キーマッピング コマンド filetype みた…

【一人 vimrc Advent Calendar 2017】vimrc で安全に autocmd を設定する【3日目】

Vim

一人 vimrc Advent Calendar 2017 3日目の記事になります。 今回は autocmd について書きます。 autocmd とは autocmd とは『任意のタイミング』に処理をフックするための機能です。 例えば、 『バッファに入る度にバッファ名をフルパスで表示する』 みたい…

【一人 vimrc Advent Calendar 2017】set nocompatible とは【2日目】

Vim

一人 vimrc Advent Calendar 2017 2日目の記事になります。 今回は vimrc の設定でよくみかける(気がする) set nocompatible について簡単に解説します。 set nocompatible とは set nocompatible とは 'compatible' オプションを無効にするため設定です。…

【一人 vimrc Advent Calendar 2017】vimrc をつくろう【1日目】

Vim

この記事は 一人 vimrc Advent Calendar 2017 1日目の記事になります。 一人 vimrc Advent Calendar 2017 とは vimrc を整理しながら vimrc や Vim の Tips をだらだら書いていこうかなーというような Advent Calendar になります。 特にネタも決めてないの…

Vim で :terminal の使い勝手をよくした

Vim

重い腰を上げてやっと Vim の :terminal を使ってみたんですが、いろいろと使い勝手が悪かってので魔改造しました。 いろいろと便利な設定を書こうと思ったら完全に煽り記事みたいになってしまい大変申し訳無くry。 :terminal を真面目に触ってからまだ半日…

Vim で1行がとてつもなく長い場合に描画を軽くする

Vim

例えば、JavaScript で minify されているコードは1行が途轍もなく長いです。 こういうコードを Vim で開く場合、シンタックスハイライト回りが非常に遅く、Vim 自体が重くなってしまう事があります。 'synmaxcol' を設定する そのような場合に 'synmaxcol' …

第33回 PORTもくもく会に行って LT してきた

第33回 PORTもくもく会に行ってもくもくするついでに LT してきました!! もくもく もくもく会っていうことで一応 Ruby のコードを書く予定だったんですが、結局午後からはほとんど LT のスライドを書いてました…。 いや、スライド自体は事前に用意していた…

Vim でシンタックスハイライトが突然オフになる現象の対処方法

Vim

覚書っていうか情報共有というか。 Vim の syntax が突然オフになる現象にお困りの方へ* パッチ 8.0.0647~8.0.1132 の方 → 8.0.1133 以降にアップデート* 8.0.1133 以降の方 → redrawtime の値をデフォルト値に戻してみて下さい— mattn (@mattn_jp) 2017年9…

最新版の Vim で :terminal コマンドを使えるようにする

Vim

最近何かと話題の Vim の :terminal ですが、使用する場合は最新版のソースコードからビルドする他にも configure 時に --enable-terminal を追加する必要があります。 $ ./configure --with-features=huge --enable-terminal これで :terminal コマンドが使…

unite-oldfiles つくった

Vim

最近 v:oldfiles というのが流行ってるらしいのでつくった。 [プラグイン] osyo-manga/unite-oldfiles NeoBundle "osyo-manga/unite-oldfiles" 最近は unite.vim よりも denite.nvim が主流らしいがわたしは使用していない。

Vim の map() や filter() に渡すラムダ内で v:val や v:key が使用できる

Vim

ちょっとした小ネタですが、従来、map() や filter() に渡す文字列式の中では v:val や v:key を使用することが出来ます。 echo map([1, 2, 3], "v:val + v:val") " => [2, 4, 6] echo filter({ "mami" : 1, "mado" : 2, "homu" }, 'v:key =~ ''^m''') " => …

Vim 8.0 で追加された関数 json_decode()/json_encode()

Vim

Vim 8.0 では JSON 形式のデータを扱う機能が追加されました。 [注意] Vim のヘルプを日本語翻訳してるvimdoc-jaですが、まだ最新版の Vim のヘルプに追従しておらず jsondecode()、jsonencode() と表記されていますが、正しくは json_decode() と json_enco…

Vim 8.0 で追加された定数 v:t_TYPE

Vim

Vim 8.0 では新しく type() が返す値が v:t_xxx のような定数として追加されました。 v:t_bool Value of Boolean type v:t_channel Value of Channel type v:t_dict Value of Dictionary type v:t_float Value of Float type v:t_func Value of Funcref type…

Vim の funcref() した関数を削除した時の挙動

Vim

ふと、気になったので試してみました。 [funcref() した後に :delfunction する] function! Test() return "test" endfunction let F = funcref("Test") delfunction Test echo F() " E933: 関数は削除されました: Test " E15: 無効な式です: F() まあ、これ…

Vim 8.0 で追加された関数 funcref()

Vim

Vim 8.0 で新しく funcref() という関数が追加されました。 これは function() と同じように関数参照を取得する関数になりますが、『関数が上書きされても元の関数を呼び出す』という違いがあります。 function! Test() return "Test" endfunction let Funct…

Vim 8.0 で追加された機能 closure

Vim

Vim 8.0 では関数に closure 機能が追加されました。 これは、関数外のローカル変数をキャプチャするための機能です。 function! s:init() let value = 0 " closure キーワードを追加することで関数外のローカル変数をキャプチャできる function! s:count() …

Vim 8.0 で追加された機能 タイマーを一時停止する

Vim

前回書き忘れたので追記。 timer_pause() を使用します。 " 一時停止 call timer_pause(timer_id, 1) " 再開 call timer_pause(timer_id, 0) これで一時的にタイマーを停止したり、任意のタイミングで再開する事が出来ます。

Vim 8.0 で追加された機能 タイマー

Vim

Vim 8.0 ではついに Vim script にタイマー機能が追加されました! この機能を使用することで処理をブロックしないで関数を呼び出すことが出来ます。 [基本的な使い方] タイマーは timer_start() 関数を使用して任意の関数を n 時間後に呼び出す事が出来ます…

Vim 8.0 で強化された機能 辞書関数

Vim

さて、以前の辞書関数は次のように call() と辞書を経由して呼び出す必要がありました。 let s:dict = { "value" : 0 } function! s:dict.up() let self.value += 1 return self.value endfunction let s:f = s:dict.up echo call(s:f, [], s:dict) " => 1 e…

Vim 8.0 で追加された Vim script の機能 Lambda

Vim

Vim 8.0 ではついに Vim script に Lambda が追加されました! Lambda を定義する場合は { args -> expr } という構文を使用します。 " Lambda は関数参照を返す " epxr にはその名の通り "式" のみ書くことができる let F = { a, b -> a + b } echo F(1, 2)…

Vim 8.0 で追加された新しいシンタックス

Vim

Vim 8.0 では新しく以下の言語に対応しました。 New Syntax/Indent/FTplugin files: AVR Assembler (Avra) syntax Arduino syntax Bazel syntax and indent and ftplugin Dockerfile syntax and ftplugin Eiffel ftplugin Euphoria 3 and 4 syntax Go syntax…

Vim 8.0 で追加された機能 function() 関数

Vim

Vim 8.0 では function() 関数の引数が新たに追加されました。 [引数の束縛] function() の第二引数に第一引数に渡す関数の引数を渡すことで、引数の束縛を行うことができるようになりました。 function! Plus(a, b) return a:a + a:b endfunction " 第一引…