サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
qiita.com/b4b4r07
Help us understand the problem. What are the problem?
プラグイン開発が盛んなエディタの一つに Vim がある。 筆者も拙劣ながら2つほどリリースした。 b4b4r07/vim-shellutils b4b4r07/vim-autocdls 前者はシェルコマンドを Vim script で関数定義してエミュレートしたものだ。Vim に最適化されているため、system() や !cmd するよりも便利になっている。後者は、それを応用したもので :cd するたびに :Ls するようにしたプラグインだ。 さて、宣伝はここまでにして、Vim プラグインを作成するとき、普段と同じ環境(つまり同じ .vimrc を使用し、普段通りのプラグインを読み込んでいる状態)で作っていると何かと弊害が起こりがちである。Vim の動作も安定しない。またプラグイン作成を一時中断して、他のタスクを処理するために Vim を使うとなると、開発中のプラグインが作業に干渉したり
Vim プラグインの歴史 GitHub 以前 (〜2008年) 昔の話です。Vim script で拡張の機能を書いたらそのスクリプトを vim.org にアップして開発者同士で共有したり、ユーザがダウンロードして使っていたようです。いわゆる「プラグイン管理」の始まりなのですが、このときはまだ手動で行われていたようです。 例えば、こんな機能も Vim script で書いた拡張です (autogroup などは考慮してません)。 Vim 7 から Vimball という機能が Vim 本体に同梱されて、それからはこれを利用するユーザもいたようです。vim.org からアーカイブされたスクリプトを持ってきて、:so % したり、気に入ったら runtimepath 以下に置いて自動読み込みしたり。その頃の plugins ディレクトリは混沌としていたようです。ペライチのスクリプトが無造作に転
最近、zsh + Vim + tmux でコマンドラインライフを過ごしている方も多くなってきたように思う。その豊かな CLI ライフを支えているのは数多くの優れたプラグインであることには間違いない(もちろんプラグインを使わない派閥も一定数いるでしょう)。 今回はとりわけ zsh に絞って有用であるプラグインを紹介していく。 zsh のプラグイン プラグインマネージャ まずは管理の要となるプラグインマネージャだろう。 今イチオシなのは zplug(neobundle + vim-plug の zsh 版)なのだが定番である Antigen も一応挙げておく。 zplug - A next-generation plugin manager for zsh Antigen - A plugin manager for zsh, inspired by oh-my-zsh and vundle.
Help us understand the problem. What is going on with this article?
2015年も終わるというのに、まだ「oh-my-zsh を入れて最高の zsh 環境作ろう」といった記事が散見される。もう oh-my-zsh は古いし、それで作る環境は最強ではない。そう断言できる。 tl;dr oh-my-zsh から作る zsh 環境はもうおしまい。ゆえに oh-my-zsh が大好きな人や、oh-my-zsh で作る環境に満足する人はこの記事の読者には成り得ない。 oh-my-zsh とは oh-my-zsh とは zsh 用の設定フレームワークとして位置づけられていて、簡易的なプラグイン機構やテーマ機構を有するコミュニティドリブンで開発されるプロジェクトである。コミュニティドリブンであるために永遠に未完成であり、OSS 界隈な人たちが寄ってたかって自分らが便利とする設定を取り込ませ続けた産物とも言える。 oh-my-zsh oh-my-zsh では役割ごとにディレ
NeoBundle は @Shougo さんが作った Vim プラグイン管理マネージャです。 日本ではとても有名なプラグインで、日本語の紹介記事や設定例が大量にヒットします(みんな大好き NeoBundle!)。 流れに任せて、若しくは超絶便利だから(とりあえず1)使っておこう、というそこのアナタ、他にもたくさんプラグインマネージャがあるのでちょっとじっくり選んでみてはいかがでしょう。 Vim プラグインマネージャの小歴史 ここで有名な Vim プラグインマネージャのスター数と初コミット日時を見てみます。比較的よく目にするプラグインマネージャに絞っております。 ツール 初コミット スター数 実装言語
注意 この記事はv1の情報となっております。 最新の情報は日本語ドキュメントを参考にしてください。 zsh のプラグインマネージャといえば Antigen です。zsh 界隈ではプラグイン文化がそこまで強くない印象を受けます。便利なプラグイン1やコマンド2がたくさんあるのに、Vim のそれほど盛り上がっていないのはプラグインマネージャが弱いからではないでしょうか。 Antigen とその弱点 Antigen はよく使われるし実際便利ですが、いくつかの欠点があります。 プラグインの読み込みが遅いこと プラグインの管理が最低限しかできないこと プラグインが antigen に対応していないといけないこと これらの問題点の幾つかは重厚なる zsh 使いの @mollifier さんも以下のスライドで言及しています。 Antigenを使おう 第二の Antigen 1つ目の問題点は Antigen
らしい。 さあ、始まりました Shell Script Advent Calendar 2015 1 日目。思ったよりも AC 全体として盛り上がりなさを感じているのは自分だけでしょうか。 タイトルからして恐れ多いですが、1 日目だしいいでしょ感で書いています。 なんで今更 「今更そんな枯れツール使わんしょw」勢が一定数いることも知っていてのこのタイトルです。 意外にもシェルスクリプトってのは根強く使われ続けていて、以下に面白いグラフがあります。 via The RedMonk Programming Language Rankings: June 2015 これは RedMonk 社が、2015年1月版のプログラミング言語ランキングを発表したもので、GitHub での各言語の使用率と、Stack Overflow での発言量を元に作られた相関グラフです。 Shell が意外にも人気ですね
(続編; --expect オプションの酷使について)私の fzf 活用事例 peco 便利ですよね。正直、使い始めてしまうと使わない日はありません。最近の CLI 界隈では選択的インターフェイスやインタラクティブフィルタなどと呼ばれるツールが盛んに開発されています。特に peco は ghq との連携で一躍人気が出た気がします。 ghqを使ったローカルリポジトリの統一的・効率的な管理について こんなやつですね。以下は ghq のリポジトリへのアクセスを簡単にするためにスクリプトです。 # Require Bash 4.0+ peco-src() { local selected selected="$(ghq list --full-path | peco --query="$READLINE_LINE")" if [ -n "$selected" ]; then READLINE_LI
昔に書いたものなので余り参考になさらずに 僕はターミナルに引きこもっています。たまに外出しても最寄りのブラウザ程度です。そんな僕は Mac を使っています。綺麗な UNIX だからです。ターミナルアプリとしてターミナル.app を使っています。iTerm2 含めいろいろ試しましたがコレがさいつよでした。そして、僕は 2 年半かけてさいつよ環境を築き上げました。 tl;dr 最強のターミナル開発環境の構築する 最強の開発環境を目指して タイトルで豪語しすぎた感はありますが、本気で構築中です。僕がターミナル環境の整備に目覚めたのは学生の時でした。特に何かのプロジェクトに携わるといったこともなく、たまに講義の課題を解いたり趣味のアプリを作成したりといった程度での開発だったので、環境構築や整備に割く時間がありました。 まずは現状 普段のターミナル環境は次のとおりです。 ターミナル.app(全画面)
emoji (絵文字) は楽しいですよね。最近は使える絵文字も増えて世界的に人気が出ているようです。 新しい絵文字250種類を含むUnicode 7.0が登場、追加される全絵文字の名称一覧はこんな感じ - Gigazine コマンドラインでの emoji 事情 コマンドラインで絵文字を入力するときは、とても面倒でした。 EMOJI CHEAT SHEET Emoji searcher このような便利サイトのおかげで、使いたい絵文字をクリックするだけでクリップボードにコピーされるため、ターミナルへ貼り付けするだけで利用できます。 しかし、個人的にですがターミナル利用中は極力ターミナルから抜け出したくありません。 そこでこんなプラグインを作成しました。 emoji-cli b4b4r07/emoji-cli Emoji completion on the command line. インタラク
Zsh Line Editor ってご存じですか。 皆さん使っているであろう、「Ctrl-A で行頭に移動、Ctrl-E で行末に移動」とかのアレである。zsh の持つコマンドライン編集機能を ZLE(Zsh Line Editor )と呼ぶ。ZLE でコマンドライン操作体系として Emacs ライクなものと vi ライクなものが選択できるようになっている。また、ZLE ではデフォルトで 4 つのキーマップ(キー割り当ての集合)が開放されている。 emacs(Emacs ライクなキーマップ) viins(vi のインサートモードのキーマップ) vicmd(vi のコマンドモードのキーマップ) .safe(カスタマイズが禁止されているキーマップ) これらとは別に main というキーマップがあり、ZLE では main に紐付いたキーマップをデフォルトキーマップとして使用する。 zsh では
#!/bin/bash # Check arguments if [[ -z $1 ]]; then echo "too few argument" 1>&2 exit 1 elif [[ ! $1 =~ ^(((https?|git)://)?github.com/)?[A-Za-z0-9_-]+/[A-Za-z0-9_-]+(\.git)?$ ]]; then echo "$1: invalid github.com URL" 1>&2 exit 1 fi # Format username/reponame uri="$(echo "$1" | perl -pe "s/^((https?|git):\/\/)?(github\.com\/)?//;s/\.git$//")" username="${uri%/*}" reponame="${uri#*/}" # Destination
AWK(オーク)を使ったワンライナーはとても強力で簡便なテキスト処理を可能とします.最近は,Perl や Ruby でもほとんど同様のことができ,取って代わられて久しいですが未だにその枯れ力といいますか,汎用性に関しては群を抜いているように思います. また,awk とは AWK の処理系のことを指しています. 一般に元祖 awk と呼ばれる処理系が最初と言われています.実際はわかりませんが,絶滅種の如く見かけることはなく,その文法などに関しても関数定義などの基本的な部分が抜けていたので New awk(通称,nawk)として多少の文法が追加された処理系が,その流派を継いでいます. そして GNU プロジェクトによって大幅強化された awk が gawk です. よく見かけるのは,gawk か nawk のどっちかだと思います. 現在,Linux では標準で gawk が,OS X では 2
tl;dr よく使われるコマンドの一つに cd コマンドがあります。ターミナル生活の 80% 近くは cd と ls である、という英文記事を何処かで見かけました。それを効率化しようという Tips です。 目的 cd はよく使われるのに使い勝手が悪いコマンドである気がしてなりません。cd コマンドは有効なパス(相対パス、絶対パスは問わず)しか解釈してくれないからです。つまり、存在していて尚且つパスが解決できるものに限るのです。例えば、ホームディレクトリにいるときに、/home/lisa/work/dir に行こうとして cd dir とだけタイプしても no such file or directory (そんなディレクトリは見当たらないよ!)と言われてしまいます。きちんとした経路でなければならないのです。いちいちパスを覚えていない場合や、部分的にしか思い出せない場合には結構面倒ですよね
Repost ➔ 優れた dotfiles を設計する | TELLME.TOKYO OS のクリーンインストールは面倒くさい. アプリケーションをいちいちダウンロードしてきて,普段の勝手と同じになるように設定する必要がある.CLI においても同じで,設定ファイルをいちいち書いたり,普段どんなプラグインを使っていたかを思い出してダウンロードするのは面倒だ. よくあるのは .vimrc などの設定ファイルを Dropbox や GitHub に置いておいて,環境を作り直したときにコピーする手法だ. dotfiles はその手法の延長線上にあって,より便利に高速化・自動化した方法だ. dotfiles とは UNIX 系の OS でいう設定ファイルのことで,ファイル名がドット . から始まることからそう呼ばれている. TL;DR HTTP 経由でインストールできる dotfiles をつくって
しかし実は難点があり、tac は Linux(GNU coreutils)にしかないことです。つまり Mac では使えません。その代わり、tail -r で代用できます。tail はファイル末尾から数行を正順で出力するコマンドですが、-r(reverse)フラグによってそれを反転、要するに逆順に出力させることができます。しかし、これまた不幸なことに、BSD 系の tail でしか使用できません。Linux には -r フラグがないのです。つまり、Linux では使えません。 Linux では tac(tail -r は使えない) Mac では tail -r(tac は使えない) ということは、ポータブルなシェルスクリプトが書けません。which などで条件分岐すれば書けなくもないですが、どちらも使えない状況ではどうしようもありません。
Warning: brew bundle is unsupported and will be replaced with another, incompatible version at some point. Please feel free volunteer to support it in a tap. という警告が出て、正式には issues にも What? "Warning: brew bundle is unsupported ..." #30815 となり Brewfile はオワコン化しました。 代替手段を模索し始めた Homebrew ユーザは、Brewfile をシェルスクリプト化して使ったり、他のツール、例えば Ansible を使ったりして、この Brewfile オワコン化問題をしのいでいました。 Brewfile をシェルスクリプト化した例:Brewfil
TOML は、GitHub の中の人が提案した、設定ファイルを記述するための小さな言語である。明瞭な文法なため、人間が読みやすい。また、TOML はハッシュテーブルに明確にマップするように設計されているので、様々な言語でのデータ構造へパースしやすい。 また、Vim で有名な NeoBundle が TOML パーサを搭載したことや、勢いづいている Go でのサポートも熱いことから、すごく伸びそうなフォーマットである。 TOMLノススメ 【個人メモ】設定ファイルフォーマットにはTOMLがいいのかも NeoBundleのプラグイン管理をTOMLに任せてvimrcをスッキリさせる GoとTOML 仕様 TOML の仕様は単純だ。 大文字小文字を区別する UTF-8 である必要がある ホワイトスペースとは tab (0x09) と space (0x20) のみ 改行とは LF (0x0A) と
背景:Golang でコマンドラインにゴミ箱を実装した話 b4b4r07/gomi - GitHub gomi is a simple trash script that works on CLI, written in golang gomi とは Go 言語製の CLI 向けごみ箱ツールです。ファイルを削除するとき本当に削除する前に、専用のごみ箱(または、システムごみ箱)にプールしておくことができます。 ワンバイナリで動作する インタラクティブな操作で簡単にリストアできる 捨てたファイルを QuickLook できる システムのごみ箱と連携もでき「元に戻す」操作もできる YAML 形式の設定ファイルでカスタマイズすることができる Windows でも動く みなさん、ファイルの削除には rm を使用されると思いますが、誤って重要ファイルを削除してしまうということは初心者もさることながら、
巷には README 駆動開発(Readme Driven Development; RDD)なるものがあるようで、とても合理的でかつ便利であったので紹介します。 README 駆動開発(以下、RDD)とはその名の通り、README ありきの開発スタイルのことで、簡単に言うと「コード書く前に README 書く」ってことです。 開発に入る前にドキュメンテーション、というまあ当たり前であるようでちょっとしたツールでは蔑ろにしがちなことですよね。 わかりやすいREADME.mdを書く - SOTA Readme駆動開発を和訳してみた - Qiita Readme駆動開発を和訳してみた - 生涯未熟 実践的なREADME駆動について - GH Issue Note RDD のメリット モチベーションが高いときに書ける 正直、README 含めドキュメンテーションってめんどくさいです。しかし、コー
背景 Zsh の醍醐味のひとつが補完機能であるのは言わずもがなですね。 この補完について、基本的なコマンドや有名プロジェクトのコマンドなどの多くは提供されているのですが、自作コマンドもちろんのこと、マイナーなコマンドは提供されていなかったりします。 その場合、ユーザが Zsh スクリプトの記法で補完ファイルを記述しなければなりません。これが結構骨の折れる作業で、Zsh が提供する補完インターフェースは高機能ゆえに複雑怪奇で、並みのユーザはおろか熟練のシェルスクリプターでも投げ出したくなる様です。 特に自作コマンドの場合、コマンドの作成で疲弊して、マニュアルやドキュメンテーションの作成でも疲弊しているところにこの作業となると、まず補完は諦めがちです。 b4b4r07/zgencomp · GitHub DEMO: そこでこのツールを使います。コマンドのUIについて簡単な JSON ファイルを
Vim からシェルコマンドを実行する方法には、Vim のコマンドライン領域から以下のように実行する方法が有名だと思います。 :echo system("ls") :!ls 例えば、カレントディレクトリのファイルリストをさっと見たかったりすると上記のように実行すればよいです。しかし、この方法はきれいな出力が得られなかったりします。前者はタイプ数も多く、後者は画面が一時的にシェルに切り替わります。この挙動を好まない方と多いと思います。また、どちらの方法もシェルのコマンドに依存するので、(/bin/ls がない、なんて状況はほぼないと思いますが)ときによっては実行できなかったりします(Windows など)。 vim-shellutils そこで、ちょっとしたプラグインをおすすめします。 b4b4r07/vim-shellutils このプラグインは Vim script のみで各コマンド(ls
【2015/07/16 追記】優れた dotfiles を設計する - TELLME.TOKYO この記事では書かなかった全体のロジックについて書きました Dotfiles Driven Development dotfiles とは Unix 系 OS で俗に言う設定ファイルのことです。.vimrc や .zshrc など、設定ファイルの多くは隠しファイルとしてファイル名の頭にドットがつくことからそう呼ばれています。 ほとんどのエンジニアは CLI 環境での開発は避けては通れないものに思います。CLI 環境は「黒い画面」として敬遠されがちで、CLI になると格段に作業効率がダウンする人も少なく無いです。その作業を効率化するキーとなるのは、設定ファイルの習熟度にあると思います。GUI 開発環境と比べてこちらはテキストベースでカスタマイズできるため、究極まで自分好みに合わせることが可能です。
これは zsh Advent Calendar 2014 の 13 日目の記事です。 cat や less などのビューアを便利にするツールを紹介します。 はじめに ファイルの中身を覗くとき cat したり、大きめのファイルの場合は less などのページャを使うと思います。 どっちを使うかの判断はユーザに任せられていて、端末内に表示しきれると思って cat を使ったらほんの数行足りなくてイラッとしつつ脳内補完したり、結局 less しなおしたり…なんてこと、あると思います。 逆もしかりで、保険をかけてあらかじめ less で開く、なんてこともありますが、少ないファイルだった場合も表示されているスクロールバックが全てページャに独占されるうえに、q をタイプしたりしないと終了できなく、とても煩わしい思いでした。 これが結構な手間だったりストレスで、なんかモヤっとするなぁなんて思っていました。
次のページ
このページを最初にブックマークしてみませんか?
『@b4b4r07のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く