web-dev-qa-db-ja.com

(ターミナルベースの)vimでメニューを作成して使用することは可能ですか?

私は、主にWindowsベースの会社の開発者向けに、仮想化されたLinuxボックスを(ローカル開発サーバーとして)セットアップしています。一部の開発者は、(特に)vimについて否定的なクラックを作成します。 (彼らは何らかの方法でLinux/Unixを表し、環境が使いにくいとは思えないことを証明しているようです。)最初にvimを使用せざるを得なかったとき(sysadminはemacsのインストールを拒否しました!)と難しいイニシャル学習曲線なので、私はやや同情しています。 nanoを紹介するのではなく(おそらく決して過ぎ去ることはありません)、vimでnanoのようなメニューを設定して移行を容易にすることができるかもしれません。 (私はそれらを与えるための非常に初心者にやさしい.vimrcファイルを見つけましたが、ナノスタイルのメニューのようなものは何もありません。)

唯一の問題は、vim(gvimではなく)でメニューを設定することが可能だと主張していることがわかった唯一の問題であり、問​​題を修正しようとしても、解決すべき問題がまだ残っていました。多くの時間を無駄にする前に、それが実際に可能かどうかを知りたいのですが、それを行う方法についての情報はほとんどないようです。

19
iconoclast

はい、可能です。 menu.vim(デフォルトのgvimメニュー定義)をロードすることも、ゼロから始めて独自に作成し、:emenuを介してアクセスすることもできます。ただし、これは常に見えるメニューのようなものではありません。コマンドラインタブ補完を使用してメニューをナビゲートする機能を提供します。

ユーザーがvimrcを持っていない場合は、まずviの互換性を無効にすることから始めます。

:set nocompatible

<Tab>でスマートコマンドライン補完を有効にします(可能なすべての選択肢を一覧表示し、<Up><Down><Left><Right><Enter>):

:set wildmenu

一致するすべての選択肢の間で繰り返しプレスサイクルを行う:

:set wildmode=full

デフォルトのメニューをロードします(これはgvimでは自動的に行われますが、ターミナルvimでは行われません)。

:source $VIMRUNTIME/menu.vim

これらの4つのコマンドの後で、:emenuを実行して:emenu<space><tab>コマンドでタブ補完を呼び出すことにより、手動でメニュー補完をトリガーできます。

タブキーと矢印キー、およびEnterキーを使用して結果をナビゲートできます(サブメニューを展開し、項目を選択します)。次にさらにステップを進め、毎回:emenuを入力しなくてもメニューをポップアップするようにマッピングをバインドすることで、さらに便利になります。

コマンドラインで<Tab>をインタラクティブに押すようなマッピングのCtrl-Zを作成します。

:set wildcharm=<C-Z>

そして、自動的に:emenu補完を呼び出すバインディングを作成します。

:map <F4> :emenu <C-Z>
19
godlygeek

自分が使用しているプラ​​グインのすべてのコマンドとキーの組み合わせを思い出せないという自分自身の問題がありました。さらに、新しいキーマッピングを設定したり、それらにアクセスするためのコマンドを作成したりすることなく、コマンドをすばやく実行する簡単な方法が必要でした。

Vim-Venu

小さな vimメニュープラグイン を書いて、vimで編集するファイルタイプごとにメニューを定義できるようにしました。このようにして、さまざまなファイルタイプに対してメニューオプション「コンパイル」を定義し、編集するファイル(.py、.c、.c ++など)に応じてコードをコンパイルするための正しい指示を開始できます。または、マークダウンファイルに「テーブル」プラグインコマンドのサブメニューを作成します。

ここで確認してください: https://github.com/Timoses/vim-ven

余談ですが、私は誰もが自分の好きなテキストエディタを選択する必要があると思います。 Vimには少し障壁があります(学習する価値があります!)。誰かが学ぶ気がないなら、vimはその人にはあまり役に立ちません。

2
Otti