web-dev-qa-db-ja.com

Vimで「Enterキーを押すか、コマンドを入力して続行する」プロンプトを無効にするにはどうすればよいですか?

外部コマンドを実行した後に表示される「Enterキーを押すか、コマンドを入力して続行する」プロンプトを無効にする方法はありますか?

編集:回避策を見つけました:余分な<CR>を私の.lvimrcのショートカットに追加します。

map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>

より良いアイデアはありますか?

94
Johan Kotlinski

1つの回避策が見つかりました:余分な<CR>をmapコマンドに追加します。

map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
52
Johan Kotlinski

私は1つのコマンドでそれをグローバルに行う方法がわかりません:

:silent !<command>

silentの後に必ずスペースを入れてください

64
Tabitha
:help hit-enter
29
anthony

これは、サイレントモードで外部プログラムを実行すると、テキストモードのvimで画面がめちゃくちゃになるという問題に対処する方法です(私の経験では、gvimはこの問題の影響を受けません)。

command! -nargs=1 Silent
\ | execute ':silent !'.<q-args>
\ | execute ':redraw!'

通常のサイレントコマンドの代わりに使用します。

:Silent top
17
emil.p.stanchev

私のvimrcでcmdheightを2に設定します(:e $MYVIMRC):

:set cmdheight=2

詳細 こちら

13
TankorSmash

vimrcファイルの構文エラーである可能性があります

11
8.8.8.8

アンソニーの答えは私を正しい場所に連れて行き、多くのメッセージで止まらないようにgvimを設定することができました。
gvimrcファイルにshortmess=aoOtIセットを追加しました。
:help shortmessが提供するヘルプページで説明されています。
文字は、見たくないメッセージのクラスを意味するか、vimにhit enter stopを回避するために切り捨てたいと思います。
gvimrcでcolumns=130を使用して広い初期ウィンドウを設定することでこれを管理しました。そのため、オーバーフローするメッセージはほとんどなく、面倒で疲れる、Enterキーを押す必要があります。

7
Juan Lanus

これは、「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
4
svlasov

画面をクリアする前に再描画を行うこともできます。私が持っていたものは次のとおりです。

exe 'ls'  
exe 'b4'  "This redraws, so the Prompt is triggered

しかし、これはプロンプトをトリガーしません:

exe 'ls'  
redraw  
exe 'b4'
3
Liang Li

次を使用できます。

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
2
yolenoyer

エラーの原因がE303である場合、.vimrcファイルに一時ディレクトリを作成で修正できる場合があります。

ファイルを開いたら、次のように記述して入力します。

:messages

エラーがある場合、プロンプトが表示されます。

E303(Error303)「 "{filename}"のスワップファイルを開けません、回復不可能」が表示される場合、システムでスワップファイルを回復しようとする古い試み(ほとんどの場合失われているか存在しない)を示している可能性があります。

これを修正するには、.vimrcファイルに一時ディレクトリを割り当てます。

.vimrcファイルの場所を見つけるには、次を入力して入力します。

$ locate .vimrc
/root/.vimrc

ファイルを開く$ vi .vimrc

これをファイルの最後に追加します。

set directory=.,$TEMP

保存して:wqで閉じます

最後に、次を使用してプロファイルをリロードします。

$ . /etc/profile

VIでファイルを開いてみてください。問題は修正されます。

0
Rafael Vidal

私は同様の問題を抱えていますが、argdoを実行して複数のファイルの同じ文字列を置き換えるとき、

 argdo %s/something/Something/eg|update

私は常にページを押し下げる必要がありました。

スクリプトを実行する前に次のオプションを設定して、多くのプロンプトではなく最終プロンプトのみが表示されるようにすることができます。

:set nomore
0

これは、ディレクトリへの書き込み権限がないディレクトリにあるファイルを保存している場合に起こります。ディレクトリでchmod 777を実行し(ファイル自体への書き込み権限を既に持っていました)、「Enterを押してください」というメッセージは表示されなくなりました。

0
jayemar
  • キーマップを使用している場合は、コマンドの最後にさらにいくつかを追加することで人生がはるかに簡単になりますが、通常は2倍で十分です。
  • ただし、vimコマンドラインからコマンドを実行している場合。それからちょっとしたトリッキーです。実際のコマンドの前にキーワードsilentを追加できます。コマンドが実行されると、自動的にvimウィンドウに戻ります。ただし、NERD_Treeなどのウィンドウの一部を再描画する必要があるため、redrawを手動で実行する必要があります。

    • この場合、vim help docの指示に従ってください:

      ヒット入力プロンプトの数を減らすには:

      • 「cmdheight」を2以上に設定します。
      • 'shortmess'にフラグを追加します。
      • 「showcmd」および/または「ruler」をリセットします。
    • このリンク は別の方法を提供します。これをvimrcファイルに入れてください

      コマンド! -nargs = 1 Silent 
      \execute 'silent!' 。 
      \| 'redraw!'を実行します。
      

そして、:Silent command通常のコマンドのように。

0
huangzonghao

私の側では、ソリューションは コマンドチェーンでsilentをより頻繁に使用する でした。

具体的には、.vimrcには次のものがありました。

nnoremap M :silent make\|redraw!\|cc<CR>

これは次のように変更されました。

nnoremap M :silent make\|silent redraw!\|silent cc<CR>

以前は、「Press ENTER」が常に表示されるわけではありませんが、頻繁に表示されていました。追加のsilentsがこれを修正しました。 (redraw!が「Enterを押してください」というメッセージを引き起こしたため、:ccにはsilentは必要ないようです。)

この変更には、:ccの出力が表示されなくなるという欠点があるため、エラーを推測する必要があります。 little Tweak これを修正します:

nnoremap M :silent make\|redraw!\|cw\|silent cc<CR>

これにより、エラーのQuickFixリスト(makeの出力)が自動的に表示されます(エラーがなければvim-magicによって消えます)。

参考までに:

このM- mappingの動機は、通常モードでMを押すだけです。

  • 編集を保存します(makeを使用する場合は、すべてがgit- controlの下にあります)
  • makeを呼び出す
  • そして、最初のエラーまたは警告に直接ジャンプします

私のMakefilesは通常、ほんの数秒しかかからないように構築されます。

少し調整することで、これは非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#

Errors、Warnings、Info、vimマジックに基づく)

Python scripts でこれを使用する方法の例。

0
Tino