Vifmから拡張子なしでファイル名をコピーする

Vifmから拡張子なしでファイル名をコピーする

~からビビンウィキそして使用クリップ、選択したファイルのファイル名をコピーする方法を示します。

nnoremap yn :!echo -n %c | xclip -selection clipboard %i<cr>:echo expand('%"c') "is yanked to clipboard"<cr>

しかし、拡張子にコピーされますが、拡張子なしでファイル名をクリップボードにコピーするにはどうすればよいですか?

ベストアンサー1

sed を使用して、最初のポイント以降のすべてのエントリを削除します。

:nnoremap yn :!sed "s/\..*//"<<<%c|xclip -selection clipboard %i<cr>

シェルがこの文字列()をサポートしていない場合は、<<<printf(なぜprintfがechoより優れているのですか?)sedへのパイプ入力:

:nnoremap yn :!printf '%%s' %c|sed "s/\..*//"|xclip -selection clipboard %i<cr>

Vifm処理マクロコマンドをシェルに渡す前に。%cファイル名になります(適切にエスケープされます)。 %sしたがって、%%sそれをインポートするにはprintfが必要です%s。繰り返しますが、<cr>これは「Enter 同等」で必須です。それ以外の場合は、コマンド全体がコマンドラインに表示されます。

これはテストされました。名前の良いファイルも t*.a .<!e>&テストに合格し、クリップボードにt*

以降の内容をすべて削除したい場合(含む)最後 ポイント(最初のポイントではない)を使用するにはsed "s/\.[^.]*$//"


コピーした文字列をステータスバーに表示するには、sedまでコマンドを繰り返して%Sマクロを使用します。

:nnoremap yn :!printf '%%s' %c|sed "s/\..*//"|xclip -selection clipboard %i<cr>:!printf '%%s' %c|sed "s/\..*//;s/$/ is yanked to clipboard/" %S<cr>

おすすめ記事