msysgitのGit Bashでも使える便利な5つのBashの補完機能
以下を設定しておくと便利になるというもの。
Linux/Unixユーザーなら、すでに設定してるんだろうけど、
WindowsユーザーGit BashでBashを使い始めた人はなかなか
こういうものがあるのかがわからないので、情報には辿りつけない気がする。
.inputrc
%userprofile%\.inputrc に以下を設定する。
#Search forward through the history for the string of characters between the #start of the current line and the point. This is a non-incremental search. ##[DownArrow key] or [Ctrl +n] "\e[B":history-search-forward "\C-n":history-search-forward #Search backward through the history for the string of characters between #the start of the current line and the point. This is a non-incremental #search. ##[UpArrow key] or [Ctrl +p] "\e[A":history-search-backward "\C-p":history-search-backward #Perform history expansion on the current line and insert a space. # !!,!:1,!:1,!-2:1 $if Bash Space:magic-space $endif #ignore case set completion-ignore-case on
.bashrc
%userprofile%\.bashrc に以下を設定する
#complete typo shopt -s cdspell
どんな機能の説明、設定、使い方を説明する。
履歴の後方検索
説明
↑キー、または、Ctlr + pで履歴から補完する。
補完の対象は、コマンド、コマンドオプション、コマンドパラメータなど
設定
"\e[A":history-search-backward "\C-p":history-search-backward
使い方
行頭で補完キーを入力するコマンド履歴をたどることができる。
$ git diff .inputrc ↓ $ cd dotfiles ↓ $ ls
コマンドの履歴だけはなく、コマンドオプション、コマンドパラメータだけをたどることもできる。
以下のようなという履歴があったとする。
4897 git status 4901 git add .gitconfig 4901 git commit 4902 git push orign master 4903 git status 4904 git log --oneline 4905 git log --graph --date=short --pretty=format:'%Cgreen%h %cd %Cblue%cn %Creset%s'
git の後で、補完キーを入力する
git [↓キー] git [Ctlr + p]
以下のように、コマンドオプションを遡っているくことができる。
$ git log --graph --date=short --pretty=format:'%Cgreen%h %cd %Cblue%cn %Creset%s' ↓ $ git log --oneline ↓ $ git status ↓ $ git push orign master ↓ $ git commit ↓ $ git add .gitconfig ↓ $ git status
履歴の前方検索
"\e[B":history-search-forward "\C-n":history-search-forward
↓キー、または、Ctlr + nで履歴から補完する。
補完の対象は、コマンド、コマンドオプション、コマンドパラメータなど
履歴の後方検索の場合とは逆に、履歴を未来の方向にたどる
特殊変数をその場で展開する
説明
以下のような特殊変数をその場で展開する
!:1 直前に実行したコマンドの1つ目のパラメータ
!:2 直前に実行したコマンドの2つ目のパラメータ
!-2:1 2つ前に実行したコマンドの1つ目のパラメータ
設定
$if Bash Space:magic-space $endif
使い方
以下のように実行したとする
$ git log --graph --date=short --pretty=format:'%Cgreen%h %cd %Cblue%cn %Creset%s' $ clear
この時点で以下のように実行すると特殊変数が展開される
$ git !-2:1-4[スペース]
スペースを入力くすると、以下のように補完される。
$ git log --graph --date=short --pretty=format:'%Cgreen%h %cd %Cblue%cn %Creset%s'
!-2:1-4は、2つ前のコマンドの1-4つ目までのオプション
(いい例が思いつかなかった。)
大文字小文字の無視
設定
set completion-ignore-case on
使い方
設定前だと以下のように dから補完されるのは2つ
orangeclover@JUZI ~ $ cd d dotfiles/ dotfiles.local/
設定後だと、以下のように d から補完されるのは大文字からディレクトリも含めて6つ
orangeclover@JUZI ~ $ cd d Desktop/ Documents/ Downloads/ Dropbox/ dotfiles/ dotfiles.local/
タイポの補完
説明
一文字の間違いなら、それに近いものに補完してくれる
設定
%userprofile%\.bashrcに以下を設定する
#complete typo shopt -s cdspell
使い方
dotfiles ディレクトリだが、dotfilseとタイポした
orangeclover@JUZI ~ $ cd dotfilse
最も近いdotfilesに補完してくれた。
orangeclover@JUZI ~/dotfiles (dev) $ pwd /c/Users/orangeclover/dotfiles
環境
- Windows 7 x64
- git version 1.7.10.msysgit.1
関連
WindowsでGit(MsysGit)環境で、秀丸エディタ、Winmergeを使う設定
ここ間違ってるよ
こうした方がよくないか?
などなど
方法は、コメント、トラックバック、はてブ、Twitter @orange_clover宛 で、お願いします。
WindowsのGit(msysgit)環境で、秀丸エディタ、Winmergeを使う設定
普段、Windows環境で使っているエディタは秀丸で、差分ツールはWinmergeだ。
Windowsなら、よくある環境だろう。
エディタに秀丸、外部差分ツールと外部マージツールにWinmergeの設定をする。
Gitのdiff・mergeをgitconfigだけでWinMergeにする
このサイトを見る限り、Gitの外部差分ツールと外部マージツールの指定には、シェルスクリプトを指定する必要はないようだ。
このサイトを真似て、WinMergeの設定をしてみた。
設定
%userprofile%\.gitconfig に以下を設定
[core] editor = 'C:/Program Files (x86)/Hidemaru/Hidemaru.exe' //fu8 [merge] tool = WinMerge [mergetool "WinMerge"] path = C:/Program Files/WinMerge/WinMergeU.exe cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" \"$MERGED\" [diff] tool = WinMerge guitool = WinMerge [difftool "WinMerge"] path = C:/Program Files/WinMerge/WinMergeU.exe cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -e -ub -dl \"Theirs Files\" -dr \"Mine Files\" \"$REMOTE\" \"$LOCAL\"
参照先のサイトの設定のままだと、MergeToolが正しく動作しなかったので修正した。(上記の設定は修正してある。)
訂正
diff側に余計な \が混じってたので削除
動かなかった現象と修正内容。
MergeToolが動かない
オプションの区切り文字の確認
diffとmergeでオプションの指定が異なる。 / なのか -なのか?
パラメータは、スラッシュ( / ) か、ダッシュ ( - ) 文字が 前に付加されます。パス名にはプリフィックス文字を付加しません。
→どちらでもいいようだ。
-mってなんだ?
WinMerge[U] [/r] [/e] [/f filter] [/x] [/xq] [/s] [/ul] [/ur] [/um] [/u] [/wl] [/wr] [/wm] [/minimize] [/maximize] [/dl leftdesc] [/dr rightdesc] leftpath [middlepath] rightpath [/o outputpath]
→そんなオプションない
-rってなんだ?
/r すべてのサブフォルダ内のすべてのファイルを比較します(再帰比較)。 ユニークフォルダ (片方のみ存在するフォルダ)は、分離された項目として 比較結果内にリストされます。 サブフォルダまで含めるとかなり比較時間が 増大してしまうことに注意してください。 このパラメータを指定しなかった場合、 WinMergeは比較するフォルダ内のファイルとトップレベルのサブフォルダのみ リストします。 サブフォルダの中までは比較しません。
→期待してる動きと違う気がする
修正して試すその1
設定
cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -dl \"local\" -dm \"base\" -dr \"remote\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
起動
マージ先(ローカルリポジトリ、もしくは、ブランチ)、分岐元、マージ元(リモートリポジトリ、もしくは、ブランチ)で
表示される。
- Mergeツールが起動するとファイルが4つできる
$ ls -1 memo.txt memo.txt.BACKUP.15692.txt memo.txt.BASE.15692.txt memo.txt.LOCAL.15692.txt memo.txt.REMOTE.15692.txt
保存
- memo.txt
1 2 <<<<<<< HEAD さーん 4 5 ろーく ======= Fizz 4 Buzz 6 >>>>>>> dev 7 8 きゅーう 10
マージした内容は、memo.txt.LOCAL.15692.txtに保存されて、memo.txtには反映されない。
修正して試す その2
設定
cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" \"$MERGED\"
起動
$ git mergetool -t WinMerge Merging: memo.txt Normal merge conflict for 'memo.txt': {local}: modified file {remote}: modified file Hit return to start merge resolution tool (WinMerge):
保存
1 2 さーん 4 5 ろーく 7 8 きゅーう 10
memo.txtに直接反映される。
こっちの方がよさそうだ。
環境
関連
msysgitのGit Bashでも使える便利な5つのBashの補完機能
ここ間違ってるよ
こうした方がよくないか?
などなど
方法は、コメント、トラックバック、はてブ、Twitter @orange_clover宛 で、お願いします。
オレンジバックに変えたるわ!
最近、自宅のノートPCも会社のPCもブルーバックによくなる。
あまりにも頻繁になるし、暑いので、ついカッとなって・・・
ご利用は計画的に。
1 回のクリック操作で色を変更できる "ブルー スクリーン"
キーボード、マウス共有ソフト「Mouse Without Borders」と「Synergy+」の比較
比較表
機能 | Mouse Without Borders | synergy+ |
---|---|---|
Linux、Mac対応 | × | ○ |
Windows 7対応 | ○ | △ |
UACの操作 | ○ | × |
ファイルのコピー | ○ | ○ ※1 |
フォルダのコピー | × | ○ ※1 |
Ctrl + Alt + Deleteのエミュレート | × | ○ |
設定の簡単さ | ○ | ○ |
設定のカスタマイズ | △ | ○ |
サーバ・クライアントの逆転 | ○ | × |
スクリーンキャプチャ | ○ | × |
安定性 | ○ | △ |
※1 パッチを適用したら。
Linux、Mac対応
Mouse Without BordersはMicrosoft製なので、Windowsのみ。
Linux、Macと共存するなら、その時点でMouse Without Bordersの選択肢はない。
Windows 7対応
Mouse Without Bordersは全く問題なくできる。
Synergy+ は、 Windows 7からWindows XPへのクリップボードやファイルのコピーができない。
UACの操作
Mouse Without Bordersは全く問題なくできる。
Synergy+は以下の設定をしても、ユーザアカウント制御の画面の操作はできない
Windows 7の管理者権限で起動してるアプリケーションをsynergyで操作する方法
ファイルのコピー
Mouse Without Bordersはデフォルトでドラッグ & ドロップでマシン間でのファイルコピーができる。
しかし、「MouseWithoutBorders\コピーしたファイル」と1つ余計なフォルダが作成されるのが、鬱陶しい。
Synergy+は、以下のパッチを適用すればファイルコピーもできる。
synergy plusでファイルをコピーする
ただし、ドラッグ & ドロップではなく、コピーは、右クリックからコピーか 「Ctrl + C」で、貼り付けも
「右クリックから貼り付けか 「Ctrl +V」でしかできない。
また、Windows 7からWindows XPへのコピーはできなかった。
フォルダのコピー
Mouse Without Bordersはフォルダを丸ごとコピーすることはできない。
Synergy+は、ファイルのコピーのパッチを適用すれば、ファイルでも、フォルダ丸ごとでもコピーできる
Ctrl + Alt + Deleteのエミュレート
Mouse Without Bordersだとこれができない
Synergy+は「Ctrl + Alt + Pause」でエミュレートができる。
設定のカスタマイズ
Mouse Without Bordersは、設定を簡単にしてる分、カスタマイズできる項目も少ない。
Synergy+は、右側のマシンの右端からは、左側のマシンに移動しないなどという設定ができる。
ショートカットキーで、カーソルを左右のマシンへ行ったり来たりできる。
左右だけじゃなくて、上下という選択肢もある。
スクリーンセーバーの同期もできる。
Synergy+の方が細かい設定をカスタマイズすることができる。
スクリーンショット
Mouse Without Bordersは、Send Screen Capture from>を選択し、マシン名を選択すると、
別マシンのスクリーンキャプチャを撮ることができる。
Synergy+は、できない。
安定性
Mouse Without Bordersは、特に問題ない。
Synergy+は、ロックかけた後やスクリーンセーバーからの復帰後に、サーバ側の入力が
おかしくなることがある。DやSなど特定のキーが、Ctrl、Altを押してないのに、
ショートカットキー状態になって、アプリが起動してしまう。
結論
僕は結局、OSの条件によって、使うソフトを使い分けている。
Windows 7がある場合は、Mouse Without Bordersを使っている。
Windows 7がない場合 または、Linuxがある場合は、Synergy+を使っている。
『指令:windows上でnulという名前のファイルまたはフォルダを作ってください。』→できたよ
conってなに?のconと同様にnulも予約デバイスなのでWindowsでは、ファイルも、フォルダを作成することできない。
Windows XPだとリネーム前の名前に戻させれるし、
Windows 7だと「指定されたデバイス名は無効です。」のエラーになる。
ファイルで適当な拡張子をつけても作れない。
フォルダで「nul 」のようにスペースをつけても作れない。
通常はね。
画像の加工は一切してません。
ふふふ。
ある裏技を使うと、できるんだよね。
続きは「自分で試してください。」
(。_+)☆\バキ(-.-メ)
嘘です。
続けます。
作り方
1) テキストファイルをエディタでUnicodeで開く
2) nulと入力
3) その後に以下の見えない文字を入力
- U+200B ( ZERO WIDTH SPACE )
- U+200C ( ZERO WIDTH NON-JOINER )
- U+200D ( ZERO WIDTH JOINER )
- U+FEFF ( ZERO WIDTH NO-BREAK SPACE )
- U+202A ( LEFT-TO-RIGHT EMBEDDING )
入力はIMEパッドから、選択する
4) 3)の文字をコピー
5) フォルダの作成でフォルダ名にペースト
はい、できあがり。
後ろに見えない文字があるだけどね。
「nul 」のスペースだと作れないけど、このUnicode文字では作れてしまう。
続き
『指令:windows上でnulという名前のファイルまたはフォルダを作ってください。』→できたよ→もっと簡単にできるとツッコミ
【お題】環境変数からファイル名や拡張子を自由に取り出す方法
バッチファイルでファイルパスからファイル名や拡張子を自由に取り出す方法
ふか 2011/02/02 13:21
これって引数ではない普通の環境変数ではできませんか?
お題もらいました。
バッチファイル、コマンドプロンプトで環境変数を展開したいとな。
「%~修飾子引数」だから、素直にやろうとすると、ドライブ文字だけに展開するならこうだよな。
c:\>echo %~dWINDIR% %~dWINDIR% c:\>echo %~d%WINDIR% %~dC:\WINDOWS
両方だめだ。
あれこれ順番を入れ替えてみる
c:\>echo %WINDIR~d% %WINDIR~d% c:\>echo %WINDIR%~d C:\WINDOWS~d c:\>echo %WINDIR%%~d C:\WINDOWS%~d
全部ダメ
set /?に載ってる置換で試す
c:\>echo %WINDIR:~d% %WINDIR:~d% c:\>echo %WINDIR:~d%WINDIR%% %WINDIR:~dC:\WINDOWS% c:\>echo %WINDIR:~d%% %WINDIR:~d%%
ダメやね。
( ̄~ ̄;) ウーン
for文を使ったこの方法しか思いつかんな。
c:\>for /F %i IN ('echo %WINDIR%') DO echo %~di c:\>echo C: C:
これなら、環境変数を引数にして渡したほうが楽かな。
スマートな方法をご存じの方教えてください。
バッチを吐き出すなんて方法もありか。
@set temp_cmd=%~dp0temp.cmd @echo @set result=%%~d1 >"%temp_cmd%" @call "%temp_cmd%" %WINDIR% @del "%temp_cmd%" @echo %result%
気になるモノ
シェルを指定できるタブ型コマンドプロンプトConsole + nyacusを試してみた
今、ckw + nyaousを使っている、5つぐらいckwを立ち上げるときもある。
そのときは、ckwもタブ型だったらなと思うことがある。
FirefoxもThunderbirdも秀丸など、だいぶ前からタブ型が主流で、それに慣れてしまったせいだろう。
Google RSSリーダーでよさそうなソフトが目に止まった。
ckw + nyaosからConsole2 + nyaosに乗り換え
http://sourceforge.net/projects/console/
タブ型コンソール。シェルは最近お気に入りのnayosを設定。
console.exeを起動して、Edit->SettingsでShellにnyaosのexeを指定する。
Cygwinはあんまり入れようと思わない。
シェルを指定できるタブ型コマンドプロンプト console。これは知らなかった。
Cygwinを入れないのは僕も同じ。
僕は、ckw + nyacusを使ってる。(nyacusではなくて、nyaousというのもあるのだろうか?)
追記
nyaousじゃなくて、NYAOSかな?
NYAOS.ORG
以下のように名前が統一されたようだ。
2.x 3.x NYADOS - DOS,Windows9x用 ----+ PNG NYACUS - Windows2000,XP用 ----+----- NYAOS NYAOS/2 - OS/2用 ----+
consoleを試してみる。
海外のソフトウェアだと日本語の表示、入力が気になるところ。
日本語を試す
細かい設定の前に、一番気になる日本語周りを試す
シェルの変更
nyacusに期待して、設定変更
日本語を試す
改めて、日本語ディレクトリ、日本語ファイルを試す。
日本語ディレクトリ
日本語ファイル
ダメだ。
文字化けするわけではないので、全く使い物にならないわけではない。
かつclsで一旦クリアーすれば直る
だが、それを毎回するのは面倒だ。
残念ながら今回の採用については、見送らせて頂きたいと存じます。
やはり ckw + nyaousだな。
あと、GNU utilities for Win32もあれば、いいだろう。