外部コマンドの実行後に表示される「Enterキーを押すか、コマンドを入力して続行します」というプロンプトを無効にする方法はありますか?
編集:回避策が見つかりました:<CR>
.lvimrcのショートカットにエキストラを追加します。
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
より良いアイデアはありますか?
外部コマンドの実行後に表示される「Enterキーを押すか、コマンドを入力して続行します」というプロンプトを無効にする方法はありますか?
編集:回避策が見つかりました:<CR>
.lvimrcのショートカットにエキストラを追加します。
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
より良いアイデアはありますか?
回答:
1つのコマンドでグローバルにそれを行う方法はわかりません:
:silent !<command>
後にスペースを入れてください silent
:redraw!
オプションは、それを解決します。ダブル<cr>
はおそらく似ています。それほど複雑ではない
回避策が1つ見つかりました:<CR>
mapコマンドにエキストラを追加します。
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
:help hit-enter
:help hit-enter
「Enterキーを押してください...」というプロンプトに対してかなり役立つ背景情報を提供しているので、なぜ誰かがこの回答に反対票を投じたのかについて知りたいです。説明してもいいですか?
set nomore
これが、サイレントモードで外部プログラムを実行すると、テキストモードのvimで画面が乱雑になるという問題に対処する方法です(私の経験では、gvimはこの問題の影響を受けません)。
command! -nargs=1 Silent
\ | execute ':silent !'.<q-args>
\ | execute ':redraw!'
通常のサイレントコマンドの代わりに使用します。
:Silent top
vimrcファイルの構文エラーである可能性があります
set number
、そのset syntax
すぐ下にありました。set syntax
Vim を削除すると、プロンプトは表示されなくなります。
:message
何が問題なのかを知るためにタイプ入力できると思います。
set syntax
。に置き換えればset syntax=on
、問題が解決します。
anthonyの答えは正しい場所に連れて行ってくれて、たくさんのメッセージで止まらないようにgvimを設定することができました。
セットshortmess=aoOtI
をgvimrcファイルに追加しました。
それはによって提供されたヘルプページで説明されています:help shortmess
。
文字は、表示したくないメッセージのクラスを意味します。または、Enterキーを押して停止しないようにvimで切り捨てます。
以前はcolumns=130
、gvimrcで幅の広い初期ウィンドウを設定することでこれを管理していたため、メッセージがオーバーフローして、Enterキーを押す必要があるという煩わしい、使い果たされる必要があります。
これは、「Enterキーを押す」ことなく、トリッキーなシナリオで外部コマンドを実行する方法です。とは異なり:silent
、コマンド出力は引き続き表示されます。
コマンドライン
:exe ":!<command>" | redraw
スクリプト/関数
exe ':!<command>'
redraw
マッピング <expr>
map <expr> <F5> ":exe ':!<command>'\n:redraw\<CR>"
<expr>
関数を呼び出すマッピング
map <expr> <F5> MyFoo()
fu! MyFoo()
return ":exe ':!<command>' | redraw\<CR>"
endf
<command>
<command>
実際の外部コマンドに置き換えることを意図しています。例:map <expr> <F5> ":exe ':!gdb'\n:redraw\<CR>"
以下を使用できます。
call feedkeys(" ")
例えば:
function! Interactive_Questions()
echo "Question 1:"
let response1 = getchar()
echo "Question 2:"
let response2 = getchar()
" Do something
" Without the next line, you would have to hit ENTER,
" even if what is written (the questions) has no interest:
call feedkeys(" ")
endf
画面クリアの前に再描画を配置しても機能します。ここに私が持っていたものがあります:
exe 'ls'
exe 'b4' "This redraws, so the Prompt is triggered
しかし、これはプロンプトをトリガーしません:
exe 'ls'
redraw
exe 'b4'
redraw
解決したそれを発行するだけです。元のメッセージとプロンプトが消えるまでの間にユーザー入力を受け入れたかったため、他のソリューションは適合しませんでした。
同様の問題がありますが、複数のファイルで同じ文字列を置き換えるためにargdoを実行すると、たとえば、
argdo %s/something/Something/eg|update
私は常にページを押し下げなければなりませんでした。
スクリプトを実行する前に次のオプションを設定して、多くのプロンプトではなく最終プロンプトのみを表示することができます
:set nomore
:set nomore
、なめなめはまだ終わりです。それはにもあり:h help hit-enter
@anthonyの
しかし、vimコマンドラインからコマンドを実行している場合。それからそれは一種のトリッキーです。silent
実際のコマンドの前にキーワードを追加できます。コマンドが実行された後、自動的にvimウィンドウに戻ります。ただしredraw
、NERD_Treeなどの一部のウィンドウを再描画する必要があるため、手動で実行する必要があります。
この場合、vimヘルプドキュメントの指示に従ってください。
hit-enterプロンプトの数を減らすには:
- 「cmdheight」を2以上に設定します。
- 「shortmess」にフラグを追加します。
- 「showcmd」や「ルーラー」をリセットします。
このリンクは別の方法を提供します。これをvimrcファイルに入れます
コマンド!-nargs = 1サイレント \「サイレント!」を実行する 。 \ | 'redraw!'を実行します
そして:Silent command
、通常のコマンドのように使用できます。
私の側では、解決策はコマンドチェーンでより頻繁に使用silent
することでした。
具体的には、以前.vimrc
は:
nnoremap M :silent make\|redraw!\|cc<CR>
これは次のように変更されました:
nnoremap M :silent make\|silent redraw!\|silent cc<CR>
以前は、[Enterキーを押す]が常に表示されるわけではありませんが、迷惑なほど頻繁に表示されていました。追加silent
のはこれを修正しました。(「Enterキーを押してください」というメッセージが表示silent
さredraw!
れた:cc
ため、必要ではないようです。)
この変更には、の出力が表示されなくなるという欠点がある
:cc
ため、エラーを推測する必要があります。少し微調整は、この修正されます。nnoremap M :silent make\|redraw!\|cw\|silent cc<CR>
これにより、エラーQuickFixリスト(の出力
make
)が自動的に表示されます(エラーがない場合はvim-magicによって表示されません)。
ご参考までに:
このM
-mappingの動機はM
、Normal-Modeを押すだけです。
make
すべてを使用する場合はgit
とにかく-controlの下にあります)make
私Makefile
のsは通常、1秒もかからないように構築されています。
少し調整することで、これをC
タイプ以外のワークロードにも適用できます。
.vimrc
追加
set efm+=#%t#%f#%l#%c#%m#
これによりvim
、:cc
(表示エラー)の次のようなメッセージを解釈できます。
#E#file#line#column#message#
#W#file#line#column#message#
#I#file#line#column#message#
(E
rrrr、W
arnings、I
nfo、vim
魔法に基づく)
これをPythonスクリプトに使用する方法の例。(申し訳ありませんが、ここにはコピーがありません。別の話です。)
エラーの原因がE303の場合は、.vimrc
ファイルに一時ディレクトリを作成すると修正されることがあります。
ファイルを開いたら、次のように入力します。
:messages
エラーがある場合は、プロンプトが表示されます。
E303(Error303) "Unable to open swap file for" {filename} "、recovery不可能"が表示された場合は、システムにスワップファイルを回復する古い試み(おそらく失われたか、存在しない可能性があります)がある可能性があります。
これを修正するには、.vimrc
ファイルに一時ディレクトリを割り当てます。
.vimrc
ファイルの場所を見つけるには、次のように入力して入力します。
$ locate .vimrc
/root/.vimrc
ファイルを開く $ vi .vimrc
これをファイルの最後に追加します。
set directory=.,$TEMP
保存して閉じる :wq
最後に、次のコマンドでプロファイルをリロードします。
$ . /etc/profile
VIで任意のファイルを開こうとします。問題は修正されます。
set dir=$TEMP
、vimrc に置くことです。これにより、vimは一時ファイルに正しい一時フォルダーを使用するようになります。これにより、エラーが修正され、「Enterキーを押す」プロンプトが削除されます。