Ctrl-Z
押し続けてこの画面を切り替えるのは面倒ですfg
(ここでCommand Terminalは呼び出しに使用するコマンドラインです)vim
。また、fg
私のコンソールに不要な行が生成されます。大学でやったことが覚えているからできると確信しています。しかし、どうしたのか覚えていません。
端末とvimとの関係に関する情報
vt100端末とは異なる端末には、画面を変更する前に保存し、必要に応じて復元する方法があります。これを行った後、vim
エントリーしてから剥がしたり終了したりすることを確認できます。ほとんどの場合、画面を描画する前に保存して、前の画面にあった内容を表示します。端末がこれをサポートしていない場合は、画面のすぐ下にコマンドラインを配置して上にスクロールします。これは、機能性の低い端末エミュレーションをTERM変数としてエクスポートするか、それを消去することでわかります(これをクリアするとラインモードに入ることも、実装に応じて最も基本的な端末コードを使用することもできます)。画面の保存/復元の詳細については、次を参照してください。vim
Ctrl-Z
vim
vim
vim
vim
ターミナルコード紹介(ANSI/VT100)、タイトルの下保存/復元画面。
答え1
起動時にgvim
新しいウィンドウが開き、ターミナルウィンドウでコマンドを引き続き使用できます。中間の「シェルエスケープ」の場合は、:sh
シェルセッションにアクセスして<Ctrl>-D
終了を入力します。 not require fg
。ただし、この場合はコンソールシェルにプロンプトを追加します。実行せずにX
2つのコンソールを起動します。 1つはvimを実行し、もう1つはシェルを実行しています。私の場合は、<Ctrl>-<Alt>-<F1>
次のようにコンソールを切り替えます。 (実際の要件に応じて、これらのオプションのいずれかが適していることを願っています。)
答え2
さて、Gary Johnsonの助けを借りてこれを行う方法を見つけました。Google グループ vim_useグループ。彼はvimでコマンドを実行する方法を説明するのに役立ちtput
ます。これが私の最終的な解決策です。
vimメモリには、次の関数スクリプトがあります。
function! ShowTerm() call system(">/dev/tty tput rmcup") call input("") call system(">/dev/tty tput smcup") redraw! endfunction
次のようにスクリプトを特定のコマンドキーシーケンスにマップします。
map [= :call ShowTerm()<CR>
私はこのシーケンスを使用しましたが、[=
好きなように使用できます。
今入場してくださいキーシーケンスこれで別の画面が表示されます。 ~によると入力するその後、vim画面に戻ります。 Enterはターミナル画面に改行文字を追加しないため、行進する行はありません。
いいね! :) これは15-20年前に行われた方法ではないかもしれませんが、うまくいくことに注意してください。
編集する
可用性に依存しないためにtput
@MarkPlotnickが推論した後、それが同じようにうまく機能することがわかりました。上記の機能をShowTerm()
次のように変更します。
function! ShowTerm()
silent !read -sN 1
redraw!
endfunction
bash
これは、使用しているシェル(または同様の読み取り呼び出しを使用する他のシェル)によって異なります。
2番目の編集
また、.vim
次の内容を含むファイルを ~/.vim/plugins フォルダーに配置することで、これを自動化できます。
" Function that allows viewing command line display last time it was seen.
" Note: Will only work on terminals that allow saving/restoring the display.
function! ShowTerm()
" This will invoke the command shell and call the read function.
" Will exit when a key is pressed. This is specific to bash and
" and may have to be changed if using a different shell.
silent !read -sN 1
redraw!
endfunction
" Maps [= sequence to view command line display last time it was seen.
map [= :call ShowTerm()<CR>
答え3
Vimコマンドは:shell
期待どおりに機能しますか?:shell<return>
Vimに$ SHELLを実行させてください。シェルを終了すると、正確に中断した場所であるVimに戻ります。
答え4
Ctrl+ w+ wvimで分割ウィンドウを切り替えるために使用することができ、端末分割でも機能します。