気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

コマンドライン作業がサクサク進むショートカット

コマンドラインで長いコマンドを打った時、矢印キーで移動したり、間違った内容をバックスペースで1字ずつ消したりしていませんか?

私はやってましたw
コマンドラインにもショートカットが存在することを教えてもらったので、忘れないようにまとめておきます。

矢印キーの代替

ショートカット 概要
Ctrl + f → カーソルを右に移動
Ctrl + b ← カーソルを左に移動
Ctrl + p ↑ コマンド履歴をさかのぼる
Ctrl + n ↓ コマンド履歴を進め

矢印キーに手を伸ばさずに移動が可能。
作業スピードが断然早くなる。

その他よく使うキーの代替

ショートカット 概要
Ctrl + [ ESCキーと同じ
Ctrl + h BackSpaceキーと同じ
Ctrl + j Enterと同じ
Ctrl + m Enterと同じ

移動系

ショートカット 概要
Ctrl + a 行頭に移動
Ctrl + e 行末に移動

1単語移動、削除

ショートカット 概要
ESC f カーソルを右に1単語移動
ESC b カーソルを左に1単語移動
ESC d カーソルの右の1単語削除
ESC Ctrl + h カーソルの左の1単語削除

いろんな削除と削除したものの貼り付け

ショートカット 概要
Ctrl + l バッファをクリアする。clearと同じ効果
Ctrl + k カーソル位置から行末まで削除(キルバッファ入り)
Ctrl + u コマンドラインに入力されたものをすべて消す(キルバッファ入り)
Ctrl + w コマンドラインに入力された単語(スペース、\、:区切り)を消す(キルバッファ入り)
AlT + d ワード単位でカーソルより行末方向の文字列を削除(キルバッファ入り)
Ctrl + y 上記コマンドで格納されたキルバッファの内容をペースト

コマンドラインをエディタで編集

fcコマンドを打つとEDITOR変数で指定されているエディタでコマンドラインを編集することができる。長いコマンドを編集する際にvimの力を借りることができる。fで検索移動とか。

処理プロセスを一時停止。別作業後にすぐに復帰

ショートカット 概要
Ctrl + z 処理中のプロセスを一時停止する
fg 一時停止プロセスを復帰する

参考URL

コマンドラインはショートカットキーで。 - 目の前に僕らの道がある
ターミナル使いこなし! - シェルのショートカットコマンド - FreeBSDいちゃらぶ日記

Vimプラグイン「NERDTree」でよく使うコマンド

自分がよく使うコマンドを参考URLのブログより転記します。

ファイル操作

コマンド 説明
o ファイルを開く
go ファイルを開き、カーソルはツリーに保持
i 水平分割でファイルを開く
gi 水平分割で開き、カーソルはツリーに保持
s 垂直分割で開く
gs 垂直分割で開き、カーソルはツリーに保持

ディレクトリ操作

コマンド 説明
o ディレクトリの開閉
O 再帰的にディレクトをすべて開く
x 親ディレクトリを閉じる
X 再帰的にすべての子ディレクトリを閉じる
e 選択したディレクトリをルートとする新たなツリーを生成する

ツリー操作

コマンド 説明
P ルートディレクトリへ移動
p 親ディレクトリへ移動
K 同階層の一番上へ移動
J 同階層の一番下へ移動

ファイルシステム

コマンド 説明
r 選択したディレクトリをリフレッシュする
R ツリーのルートをリフレッシュする
m メニューを表示する(ファイル/ディレクトリの追加/削除/コピー/移動が可能)
cd 選択したディレクトリにCWDを変更する

参考URL

Vimプラグイン「NERDTree」設定・コマンド備忘録

Rails レンダリング結果をファイル出力する

レスポンスのフォーマットを変更

リクエストの種類に応じて、レスポンスのフォーマットを変更するには以下のように記述。

# app/controllers/products_controller.rb

# 下記のリクエストに応じて、それぞれの形式でレスポンスを返す
# GET /products/1
# GET /products/1.json
# GET /products/1.xml
# GET /products/1.yaml
def show
  @product = Product.find(params[:id)

  respond_to do |format|
    format.html # show.html.erb(アクション名.出力形式.拡張子)
    format.json { render json: @product } # JSON形式
    format.xml  { render xml:  @product } # XML形式
    format.yaml { render text: @product.to_yaml } # YAML形式
  end
end

レンダリング結果をファイル出力する

send_data:動的に生成されたデータを出力する
render_to_string:表示結果を文字列として取得する

respond_to do |format|
   format.html { send_data render_to_string, filename: filename, charset=shift_jis" }
end

参考URL

よく忘れるRailsのコントローラーでのrenderメソッドのレシピ集 - Rails Webook
send_data - リファレンス - - Railsドキュメント
render_to_string - リファレンス - - Railsドキュメント

sshする際にパスワード入力なしで複数サーバーを移動する方法(ssh-agent)

ssh-agentでパスワードを保持させ、~/.ssh/configに「ForwardAgent yes
」と書いておくことで実現できる。

ssh-agentとは

sshの鍵をssh-agentに保持させ、使い回すツール

ssh-agentの使い方(Mac OS X環境)

Mac OS Xにおいてはsshするとssh-agentが起動されるので、起動不要。

秘密鍵の登録状況の確認

$ ssh-add -l
The agent has no identities.

秘密鍵の登録

~% ssh-add .ssh/id_rsa
Identity added: .ssh/id_rsa (.ssh/id_rsa)
~% ssh-add -l
2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx .ssh/id_rsa (RSA)

接続先における秘密鍵の情報の引き継ぎ方

$ ssh -A ホスト名

.ssh/configの活用

下記のように設定するとhogehostへsshする際に -Aオプションとユーザー名の指定が省略できる。

$ vim ~/.ssh/config
ForwardAgent yes
Host hogehost
    User fuga

参考URL

ssh-agentの使い方 - Qiita
  そろそろちゃんとsshの設定をしよう by yota.log

Mac OS Xのホスト名の変更方法

ホスト名は3つ存在する。

確認方法

sudo scutil --get ComputerName
sudo scutil --get HostName
sudo scutil --get LocalHostName

設定方法

sudo scutil --set ComputerName newName
sudo scutil --set HostName newName
sudo scutil --set LocalHostName newName

下記のようなメッセージが表示されたため、重複しないであろうホスト名に変更したのが変更経緯。
「このコンピューターのローカルホスト名"xxx.local"は、このネットワークですでに使用されています。名前は自動的に"xxx-2.local"に変更されました。」

症状が改善されるどうか、しばらく様子見てみようと思います。

参考URL

os x - MacOSXでホスト名が勝手に(自動で)変わってしまう - スタック・オーバーフロー