batファイルおさらい
( ´_ゝ`)ノシ
yoshitiaです。
色々あって2015年の年末に勤めてた会社やめて
2016年の2月から別の会社に入りました。
教訓: 人の縁マジ大事
本題。
ちょっとコマンドプロンプトのbatファイル使う機会が出来た時に
「まったくのプログラミング初心者って
いきなりプログラミング言語入るよりコマンドプロンプトや
シェルスクリプトから入った方がよくね?」
と思い立ってbatファイル書いてみることにした。
(煎じ過ぎて出がらしだろうなぁ)
定番のHelloWorldから。
hello.batファイルを作って書く。
pauseはbatファイル実行終了後画面が即閉じるのを防ぐ。
echo Hello World! pause
ファイルを保存したらbatファイルをクリック。
コマンドプロンプトが出てきて次の文字が表示される。
echo Hello World! Hello World! 続行するには何かキーを押してください . . .
echo Hello World!の部分は不要なのでこう書く。
@echo off echo Hello World! pause
行頭に@をつけるとその行は画面に表示されない。
echo offにすると次の行から実行するコマンドが
表示されなくなる。
echo Hello World! Hello World! 続行するには何かキーを押してください . . .
それとbatファイルの中に実行コマンドの説明文を入れる時は
remを使う。
echo offの次の行からじゃないと画面に表示されるので注意。
@echo off rem hello.bat - コマンドプロンプト画面にHello World!を表示する。 echo Hello World! pause
変数を設定してみる
cd %~dp0 rem set.bat - 変数を設定して利用する rem 変数を設定します。setで変数を設定すると rem 長い文字列を何度も入力しなくて良くなります。 rem batファイルが終了するとsetされた変数は削除されます。 set longstring=寿限無寿限無五劫の摺り切れ海砂利水魚の水行末雲来末風来末食う寝る所に住む所藪柑子ブラコウジパイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助 echo %longstring% echo; rem echo;で改行してます。 echo 12345%longstring% rem 変数の前後に文字をくっつけて表示できます。 echo; echo %longstring%67890 echo; pause
setを使うとJAVA_HOMEとかをbatファイル実行中の間設定できるので
環境変数がないと実行できないソフトを軽く試すこともできます。
実行前確認メッセージを表示させる
crowd-logic.com
リンク先のコードにあるgoto :yes、goto :noは
:noまたは:yesと書いてある行の次の行からのコマンドを実行するものです。
exitは実行するとbatファイルの実行をそこで終了します。
gotoは簡単に処理を実行したい行に移動できますが
使いすぎるとコードの順番を読むのが難しくなるので
極力使わない方がいいです。
(リンク先のgotoの使い方は良い使い方なので参考になります)
文字列置換 2016/03/12追加
@echo off cd %~dp0 @rem replace.bat - 変数に格納した文字列の文字を置換 @rem ポイント: =の左右にスペースを入れない事。変数名が「var 」として認識されたり @rem 格納される文字列が「 C:/home/document」になる set var=C:/home/document @rem %var:/=\% の :/=\が置換処理を指定している部分。 @rem :が処理指定開始の文字で=の左側で置換したい文字、 @rem 右側でどの文字に置換するか指定している set replace_var=%var:/=\% @rem C:\home\documentが出力される echo %replace_var% @rem "C:\home\document"が出力される echo "%replace_var%" pause
置換の結果を変数に格納する処理を何回か重ねれば
大抵の置換処理はなんとかなると思う。
割と使いそうなのはファイル名に日時を使う時の整形処理とか。
srround.vimとevil-surroundの括弧の中のスペース話。
( ´_ゝ`)ノシ
yoshitiaです。
2015年も残すところ10日を切った辺りからC#始めました。
ええ、Arch linuxでmono+omnisharp-server+emacs+evilで。
なんですが、
using System;
class Hoge {
static void Main() {
Console.WriteLine("12月 {0}{1}日爆発しろ。", 2, 4);
}
}
なコードを書く時{0}、{1}の{をsurround.vimでvS{などとやると、
{ 0 }となるわけですが、0の左右に半角スペース入ってると
コンパイルでエラー出るorz
timcharper/evil-surround · GitHub
英語力ェ・・・orz
諦めかけた所で、
「こういうこと起こるのプラグイン作者がわからんわけない」と思い直し
vS{と開き括弧でやったらスペース付くんだし、
vS}でやったらスペース無しになるんじゃね?(ピーン)
出来た・・・orz
{0}みたいに囲めたwww
Vimのsurround.vimでも出来たので元々あった機能らしいorz
すごい。
VimとEmacsのカーソル移動
1 vimとemacsのカーソル移動
1.1 前書き
1.2 操作の表記
1.4 行末・行頭移動
1.4.1 vim ノーマルモード 0(行頭)、$(行末)
1.4.2 emacs C-a(行頭)、C-e(行末)
C-aなのは多分a=先頭のイメージなんでしょうねー。 C-eはend。
1.5 単語単位の移動
単語単位の移動はタブや空白で区切られた単語やカンマ、ピリオドです。 vimとemacsは元が日本語を想定したエディタではないので日本語の文章では いまいち上手く動かないです。 ただ、上下左右の移動よりは早くカーソルを移動できます。
1.5.1 vim w、W(右方向) b、B(左方向)
大文字はピリオドとカンマを飛ばして移動します。
1.5.2 emacs M-f(右方向)、M-b(左方向)
特にコメントなし。
1.6 まとめ
色々紹介してなんですが、上下左右移動以外は結構使わないです。 私が割と使うのは検索とかファイルの先頭・末尾に移動、行指定移動。 evil-modeの場合は他の操作に割り当てられていたりするので各自確認お願いします。
Arch LinuxでEmacsclientを利用する時の環境変数設定の話。
( ´_ゝ`)ノシ
この記事はEmacs Advent Calendar 2015 12日目の記事です。
11日目はkoshさんの記事でした。
Emacs - 連想リストの参照を少しでも楽にしたい - Qiita
本記事はEmacsclientのお話です。
1. Emacsclientって?
プラグインや設定が多くてemacsが重くなった時の対処法の一つ。
常駐ソフトの様に裏であらかじめ起動させておく。
既に起動させている状態なので「起動が重い!」と言わなくて済む。
うっかりemacsclientのウィンドウを終了させても、バックグラウンドで
起動してるままなので安心。
本記事はpacmanでインストールしたGNU emacs 24.5.1を使っています。
2. Arch linuxで使う時は
systemdってのを使う。
https://wiki.archlinux.org/index.php/Emacs#As_a_daemon
~/.config/systemd/user/emacs.service
にemacsをバックグラウンドで起動する設定を書いて
$ systemctl --user enable emacs
でsystemdで利用可能な状態にして
$ systemctl --user start emacs
でバックグラウンドで起動させる。
$ emacsclient -nc
で使う。
~/.bashrcに
alias ekill='emacsclient -e "(kill-emacs)"'
と書いておくとemacsclientを再起動させたい時に
ekillと打つだけで済むので楽です。
3. 本題
2. の通りに設定してそのまま使うと
IMEを使った日本語入力ができない事態に遭遇します。
原因はsystemdから起動する時のソフトは
.bashrcの設定を読み込まないことらしい。
emacsでM-x eshellして.bashrcで設定している変数を
$echo $XMODIFIRES
の様にechoで確認して文字が出力されなかったら多分これです。
4. どーすんのよ
~/.config/systemd/user/emacs.service
に環境変数の設定を書きます。
[Service]の下の行あたりに
Environment="LANG=ja_JP.UTF-8" "HOGE=huga"
と書いて保存したら
$emacsclient --e "(kill-emacs)"
でemacsclient再起動して
M-x eshellして
$echo $LANG
$echo $HOGE
で確認しましょう。
ja_JP.UTF-8とかhugaと出てきたら設定OKです。
後は.bashrcで設定してたもので必要な環境変数を設定しましょう。
5. systemdの環境変数設定の仕方ってだるくないか?
この記事を見て、systemdで起動する時、
.bashrc読み込んでくれたらいいのにと思うかもしれません。
思うかもしれませんがちょっと待ってください。
この記事を読んでいる方で長い期間利用しているPCや
他人のPCを使っていて、昔にインストールしたまま放置していたソフトや
知らない設定で今やろうとしていたことを邪魔された経験の
無い方はいらっしゃいますか?無い人の方が珍しいのではないでしょうか?
systemdのやり方であればソフト毎に環境変数を設定できるので
他のソフトの環境変数とぶつからない素敵なやり方だと思います'`ィ (゚д゚)/
6. まとめと言う名の言い訳
この記事どちらかというとArch Linux Advent Calendarじゃないかって?
Emacsの話だから⊂(^ω^)⊃ セフセフ!!
Emacs Advent Calendar 2015 13日目 はkai2nenobuさんの記事になります。
VimConf2015に行ってきました。
1.前置き
( ´_ゝ`)ノシ
yoshitiaです。
去年に続きVimConf2015に参加してきました。
今年は参加者登録が始まってすぐに登録したので
名札にtwitterアイコン付けてもらいました。
これがその名札です。
懇親会の時に飲み物がかかったみたいで少し(´・ω・`)。
去年は会場着が遅くなり@kaoriyaさんの発表を生で聞けなかったのが残念でした。
和服姿の美人の発表ですよ皆さん。
今年こそは!→開始時間10:30と早くなる
+ VimConf登録前に当日午前中に病院に行く予約を入れていた
→11時過ぎに会場着。
・・・来年こそは。
2.発表
発表のスライドはVimConf2015公式サイトのAgendaにリンクがあります。
会場へ向かう電車でtwitterから#vimconf2015タグで実況を見てたら
@kaoriyaさんの発表でスライドが表示できないトラブルが発生
→スライド無しで発表敢行→問題なく発表やりきる
の熱いイベントが発生していた模様。
・@kaoriyaさんの発表
google codeの閉鎖が決まってから
移行先としてgithubとbitbucketが手を挙げたそうで。
(サービス側から手を挙げるってすごいわ)
vim-jpの方々が良くログインするhttp://lingr.com/で
(lingrの読みは「リングル」だと思ってましたが「リンガー」と呼ぶ人が多いっぽい)
アカウントを譲ってもらう交渉をしてるって話を見た覚えがありましたが
この辺りの話だったのかー。(あまり気にしてなかった)
この発表のオチとして、質問タイムでと来て
@kaoriyaさんに「neovimについてどういう立場ですか?」と来て
「答えにくいですね・・・僕だったらああは作らなかったと思います。
atomとかvs codeとかベースで、vimをまるまる再現する方が
いいんじゃないかと思う。
vimの特徴であったいろんなOSへの対応など、多様性を捨ててしまっている。
お金をあれだけ集めて2年で何をやったんだ」
すごくハッキリとした意見。
ただし、次の発表は@ShougoMatsuさんのNeovim関連の発表。
@ShougoMatsuさん(´・ω・)カワイソス
・@ShougoMatsuさんの発表
Neovim用自動補完プラグイン(Visual StudioのIntelliSenseみたいな機能)
deopleteの話。
Vimは自力で非同期処理を実現できないのでプラグイン開発者がVimproc.vimのような
ruby等別のプログラミング言語を利用したプラグインを作成して
対応している現状です。
非同期処理を使わないと補完処理がすごく残念な動作をします。
例えば、"printf"を補完する時に
"pri"と入力した辺りでキーボード入力が出来なくなって
少し後にprintf等の補完候補一覧が表示される。
単語を入力するごとにキーボード入力を受け付けない時間が出来るので
すごくストレスがたまります。
非同期処理を使うとユーザのテキスト入力を邪魔せずに補完できるので
便利なのです。
@ShougoMatsuさんは補完プラグインを作る際、Vimが自前で非同期処理に
対応していない点で苦労されたかでVimが非同期処理対応になるのを
期待していたようですが中々対応する話にならなかったようです。
そんな所でVimを作り直そうとできたNeovimが自前で非同期処理対応すると
聞いてNeovim用自動補完プラグイン作成を決めたそうです。
・・・Shougoさんの発表ってより自分の知ってる情報並べただけになったorz
まあいいか。
記事が長くなりすぎたので別記事に続きを書きます。
Arch Linuxにgnome-doインストールした
( ´_ゝ`)ノシ
yoshitiaです。
Vimconf2015まで後一週間切り、年末も近づいてきました。
最近はVimやEmacsはずっとArch Linuxで使っています。
前フリは特に関係ありませんがArch Linuxにgnome-doを導入しました。
macだとQuickSilver、WindowsだとLaunchyに相当する
コマンドライン型のランチャーソフトです。
(Launchyでググるとソフトの紹介記事があると思います。)
本記事はgnome-doをArch Linuxにインストールした際のメモです。
(対象: gnome-do 0.95.3-2 2015/11/15現在)
pacman -Sでgnomeとgnome-doをインストール。
gio-sharp、intltoolもpacman -Sでインストール
ここまででgnome-do自体は動くようになりますが、
プラグインが無いのでメニューバーのアプリケーション一覧くらいしか
検索してくれません。
プラグインは下記リンク先にあるリンクのどれかから
nome-do-plugins-0.8.5-2-any.pkg.tar.xz
flickrnet-3.10.0-2-any.pkg.tar.xz
の2つをダウンロードします(多少バージョンの数字違うかもです。)
32bitOS用と64bitOS用のリンクが混ざっているので注意してください。
http://www.filewatcher.com/_/?q=flickrnet.pkg&p=9
http://www.filewatcher.com/_/?q=gnome-do-plugins_0.8.5.pkg
ダウンロードできたらflickrnetから始まるファイルを指定して
pacman -Uします。次にgnome-do-pluginsをpacman -Uすると
gnome-doのプラグイン設定画面に各種プラグインが表示されます。
プラグインの紹介はよそのweb記事見たら色々あると思います。
以上が記事本文になります。
今年も何かのAdvent Calenderに記事出せるといいなぁ。
少し早いですが本記事を読んでいただいた方に良い年末が訪れますように。
Happy Linux Life!