外部コマンドを実行した後に表示される「Enterキーを押すか、コマンドを入力して続行する」プロンプトを無効にする方法はありますか?
編集:回避策を見つけました:余分な<CR>
を私の.lvimrcのショートカットに追加します。
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
より良いアイデアはありますか?
1つの回避策が見つかりました:余分な<CR>
をmapコマンドに追加します。
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
私は1つのコマンドでそれをグローバルに行う方法がわかりません:
:silent !<command>
silent
の後に必ずスペースを入れてください
:help hit-enter
これは、サイレントモードで外部プログラムを実行すると、テキストモードのvimで画面がめちゃくちゃになるという問題に対処する方法です(私の経験では、gvimはこの問題の影響を受けません)。
command! -nargs=1 Silent
\ | execute ':silent !'.<q-args>
\ | execute ':redraw!'
通常のサイレントコマンドの代わりに使用します。
:Silent top
vimrcファイルの構文エラーである可能性があります
アンソニーの答えは私を正しい場所に連れて行き、多くのメッセージで止まらないようにgvimを設定することができました。
gvimrcファイルにshortmess=aoOtI
セットを追加しました。:help shortmess
が提供するヘルプページで説明されています。
文字は、見たくないメッセージのクラスを意味するか、vimにhit enter stopを回避するために切り捨てたいと思います。
gvimrcでcolumns=130
を使用して広い初期ウィンドウを設定することでこれを管理しました。そのため、オーバーフローするメッセージはほとんどなく、面倒で疲れる、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
画面をクリアする前に再描画を行うこともできます。私が持っていたものは次のとおりです。
exe 'ls'
exe 'b4' "This redraws, so the Prompt is triggered
しかし、これはプロンプトをトリガーしません:
exe 'ls'
redraw
exe 'b4'
次を使用できます。
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
エラーの原因がE303である場合、.vimrc
ファイルに一時ディレクトリを作成で修正できる場合があります。
ファイルを開いたら、次のように記述して入力します。
:messages
エラーがある場合、プロンプトが表示されます。
E303(Error303)「 "{filename}"のスワップファイルを開けません、回復不可能」が表示される場合、システムでスワップファイルを回復しようとする古い試み(ほとんどの場合失われているか存在しない)を示している可能性があります。
これを修正するには、.vimrc
ファイルに一時ディレクトリを割り当てます。
.vimrc
ファイルの場所を見つけるには、次を入力して入力します。
$ locate .vimrc
/root/.vimrc
ファイルを開く$ vi .vimrc
これをファイルの最後に追加します。
set directory=.,$TEMP
保存して:wq
で閉じます
最後に、次を使用してプロファイルをリロードします。
$ . /etc/profile
VIでファイルを開いてみてください。問題は修正されます。
私は同様の問題を抱えていますが、argdoを実行して複数のファイルの同じ文字列を置き換えるとき、
argdo %s/something/Something/eg|update
私は常にページを押し下げる必要がありました。
スクリプトを実行する前に次のオプションを設定して、多くのプロンプトではなく最終プロンプトのみが表示されるようにすることができます。
:set nomore
これは、ディレクトリへの書き込み権限がないディレクトリにあるファイルを保存している場合に起こります。ディレクトリでchmod 777を実行し(ファイル自体への書き込み権限を既に持っていました)、「Enterを押してください」というメッセージは表示されなくなりました。
ただし、vimコマンドラインからコマンドを実行している場合。それからちょっとしたトリッキーです。実際のコマンドの前にキーワードsilent
を追加できます。コマンドが実行されると、自動的にvimウィンドウに戻ります。ただし、NERD_Treeなどのウィンドウの一部を再描画する必要があるため、redraw
を手動で実行する必要があります。
この場合、vim help docの指示に従ってください:
ヒット入力プロンプトの数を減らすには:
- 「cmdheight」を2以上に設定します。
- 'shortmess'にフラグを追加します。
- 「showcmd」および/または「ruler」をリセットします。
このリンク は別の方法を提供します。これをvimrcファイルに入れてください
コマンド! -nargs = 1 Silent \execute 'silent!' 。 \| 'redraw!'を実行します。
そして、:Silent command
通常のコマンドのように。
私の側では、ソリューションは コマンドチェーンでsilent
をより頻繁に使用する でした。
具体的には、.vimrc
には次のものがありました。
nnoremap M :silent make\|redraw!\|cc<CR>
これは次のように変更されました。
nnoremap M :silent make\|silent redraw!\|silent cc<CR>
以前は、「Press ENTER」が常に表示されるわけではありませんが、頻繁に表示されていました。追加のsilent
sがこれを修正しました。 (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
を呼び出す私のMakefile
sは通常、ほんの数秒しかかからないように構築されます。
少し調整することで、これは非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
rrors、W
arnings、I
nfo、vim
マジックに基づく)
Python scripts でこれを使用する方法の例。