検索または移動で結果を開く簡単な方法

検索または移動で結果を開く簡単な方法

findまたはを実行すると、一致locateするファイルが1行に1つずつstdoutに入力されます。次のステップは通常、これらのファイルの1つを開くことです。フルファイルパスを入力せずに検索結果と何らかの方法で対話できる場合は、より高速で効率的になります。検索結果に表示されているファイルを開く最速の方法は何ですか?

で提供されているソリューションに似ています。「vi」を使用して「検索」結果を開きます。複数のファイルを「見つけて」vimで開く方法は?「検索」コマンドの結果に基づいてアクションをとるには?入力する必要がある2番目のコマンドはかなり長く、必要なだけ高速ではありません。

代わりに、検索結果の各ファイルを数値変数名(s1 - sn)に自動的に割り当てて最初の結果を開くには、入力する方法はありますかvi $s1?それとも、このようなファジーファインダーを使用してこの問題を解決する方が良い方法ですか?富士またはファシスト党員

ベストアンサー1

私はこれを~/.screenrcしばらく持っていました:

bind -c pasteline 1 eval copy 'stuff "-Y"' 'paste .'
bind -c pasteline 2 eval copy 'stuff "2-Y"' 'paste .'
bind -c pasteline 3 eval copy 'stuff "3-Y"' 'paste .'
bind -c pasteline 4 eval copy 'stuff "4-Y"' 'paste .'
bind -c pasteline 5 eval copy 'stuff "5-Y"' 'paste .'
bind -c pasteline 6 eval copy 'stuff "6-Y"' 'paste .'
bind -c pasteline 7 eval copy 'stuff "7-Y"' 'paste .'
bind -c pasteline 8 eval copy 'stuff "8-Y"' 'paste .'
bind -c pasteline 9 eval copy 'stuff "9-Y"' 'paste .'
bindkey ¬ command -c pasteline

¬1デフォルトでは、画面内で入力すると、最初の行がカーソルの上に挿入され、次に2行目などが挿入¬2されます。

私のものにも~/.Xdefaults以下があります。

XTerm.VT100.translations:             #override\
    Meta <KeyPress> /: dabbrev-expand()

画面の内容xtermに基づいて完了することができます(カーソル位置で後ろを回って)。Alt+/

の場合zsh内で使用すると、screen次のことができます。

copy-screen() {
  screen -X eval copy 'stuff "-$ H\r"' 'writebuf .lastoutput'
  killring=(${(Oaf)"$(<~/.lastoutput)"})
  CUTBUFFER=$killring[1]
  killring[1]=()
}
zle -N copy-screen
bindkey '\ec' copy-screen

Alt+Cカーソルの上の行を切り取りバッファに保存し、ループ(モーダルで貼り付けて繰り返す)を終了するCtrl+Yウィジェットにバインドします。 (上記ではホームディレクトリから始まるとします。)Alt+Yemacsscreen

挿入されたテキストを引用する必要がある場合(たとえば、スペースやその他の特殊なシェル文字が含まれているため)、Alt+"forと入力してzsh引用することができます。

たとえば、次のように実行しました。

$ find /usr/local -size +1M
/usr/local/lib/liblzma.a
/usr/local/share/doc/sudo/ChangeLog
/usr/local/share/perl/5.18.2/Unicode/Unihan/Definition.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/RSKangXi.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/IRG_TSource.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/HanYu.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/RSUnicode.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/IRG_GSource.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/IRGKangXi.db
/usr/local/share/perl/5.18.2/Unicode/Unihan/IRGHanyuDaZidian.db    

上記のsudo ChangeLogを開きたいですvim。最初の方法では、次のように入力する必要があります。

vim ¬9

2番目の方法を使用してください。

vim /私たちAlt+/

そして、Alt+/変更ログが表示されるまでこれを繰り返します。

3番目の方法を使用してください。

ウィムAlt+CCtrl+YAlt+Y

そして、Alt+Y変更ログが表示されるまでこれを繰り返します。

最後の方法を$s1クエリに使用できます。

配列に保存せず、配列killring(たとえば)に保存して最初の行、2番目の行$sに使用します...$s[1]$s[2]

copy-screen() {
  screen -X eval copy 'stuff "-$ H\r"' 'writebuf .lastoutput'
  s=(${(Oaf)"$(<~/.lastoutput)"})
}
zle -N copy-screen
bindkey '\ec' copy-screen

Alt+Cカーソルの上の行をs配列に保存します。

それにもかかわらず、我々は画面に表示された内容を検索していますが、これは最後のコマンド出力の内容と必ずしも同じではありません。たとえば、printf 'a\bc \n'5バイトa、BS、cSPC、およびLFを出力しますが、表示のみですc

おすすめ記事