重要なvimコマンドは何ですか? 新しいユーザーがトラブルに巻き込まれないようにするには、何を知っておく必要がありますか? コメントごとに 1 つのコマンドでお願いします。
36 に答える
かけがえのないもの(vimのビジュアルモードとは異なり、viでも動作するため)はマークです。m
(小文字) と選択した文字 (x など) でさまざまなスポットをマークできます。その後、別の場所に移動し、「x (backquote letter) to the exact spot, or with
'x」 (アポストロフィ文字) でその行に戻ることができます。
これらの動きは、コマンド (ヤンク、削除など) の引数として使用できます。たとえば、10 行を削除するとします。カウントしてから一番上の行に移動して を入力する代わりに10dd
、ブロックの最初または最後に移動しmm
て (m をマーク) を押し、次にブロックのもう一方の端に移動してd'm
(アポストロフィ m を削除) を押します。この例でアポストロフィの代わりに逆引用符を使用すると、削除は行単位ではなく文字単位で機能します。「mark m」で行の途中に印を付け、別の行の途中に移動してから「d backquote m」と入力すると、私の意味がわかります。
* または # を使用して、カーソルの下の単語をそれぞれ下方向または上方向に検索する方法を学んだ日は、とてもうれしかったです。必ず最初に行っ:set incsearch
てください。:set hlsearch
実行する反復アクションがある場合、通常、マクロは正規表現よりも高速です。入力するだけ
q[0-9a-z] in normal mode
多くの人が使っています
qq
速いから。通常モードでもう一度 q を押すと、記録が停止します。次に、入力するだけです
@[0-9a-z] in normal mode
録音したばかりの内容を繰り返します。
@q
上記のような例です。
編集して追加: マクロを繰り返すこともできます。行頭にジャンプし、タブを挿入し、1 行下にジャンプするマクロをプログラムしたとします。次に、「@q」と入力してマクロをテストし、一度実行します。次に、「9@q」と入力して、アクションをさらに 9 回繰り返すことができます。
'J'(Joinの場合はJ、大文字)コマンドを使用して、行末の改行を削除します。そうでなければ、それはトリッキーだと思うでしょう。
IBM からのこの最近の Vim チュートリアルは非常に優れています
:q -> quit
:w -> save
:q! -> quit and don't save
:x -> save and quit
:[number] -> go to line number
G -> go to end of file
dd -> delete line
p -> "put" line
yy -> "copy" line
:s/[searchfor] -> search
私はそれらが出発点の基本的なものだと思います
まず、vi を閉じる方法を知っておく必要があります: ctrl-c: q!
残りはvimtutorから見つけることができます。コマンド ラインで「vimtutor」と入力して、vimtutor を起動します。
これは個人的な好みの問題ではありますが、重要なことの 1 つは別のものに再マップEscすることです。
Esc挿入モードを終了するためにキーに手を伸ばすのは非常に不快ですが、Vim の優れた点は、キー マッピングが可能なことです。
Control現在、 +を使用して次のマッピングを使用していますS。
inoremap <C-s> <Esc>:w<CR>
これには、既にメモリにコミットしたキー マッピングであるという利点があり、通常モードに移行するたびに作業を保存できるという付加価値があります。ええ、私はそれがクレイジーであることを知っていますが、とにかく頻繁に保存コマンドを押します. 悪い癖のようなものですよね。
vimを使用している場合、(コマンドモードの)「u」コマンドは最後に入力したコマンドを元に戻します。このコマンドを繰り返し使用して、ファイルを保存する前に犯した可能性のある間違いを元に戻すことができます。
" ~/.vimrc
" Turn on line numbering
set nu
" Turn on syntax highlighting
syntax on
" Set 4 space expanding tabs
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
"turn off line wrapping
set nowrap
" Map CTRL-N to create a new tab
:map <C-n> <ESC>:tabnew<RETURN>
" Map Tab and CTRL-Tab to move between tabs
:map <Tab> <ESC>:tabn<RETURN>
:map <C-Tab> <ESC>:tabp<RETURN>
Vim Tips Wikiには、多くの優れたコマンドがリストされています。
http://www.rayninfo.co.uk/vimtips.htmlには、これなしでは生きていけない基本的なものから、試してみようとは思わなかった非常に洗練されたものまで、Vim のヒントの素晴らしいコレクションがあります。
エイリアスvinedit:)
すべてのユーモアはさておき..neditを使用しない場合のviの場合..
i
(挿入モードに切り替えます)a
(追加=行末に移動し、挿入モードに切り替えます)esc
(挿入モードを終了します)dd
行を削除するx
文字を削除する:wq
(保存して終了)/
検索を開始しますn
次を見つける?
逆方向に検索します。yy
(ヤンク)行をバッファにコピーしますpp
(貼り付け)ここに貼り付けますr
(文字を置き換える)<N> <command>
これはすっきりしていますが、数字を入力してからコマンドを入力できるようにする機能を悪化させます。5dd
5行を削除します
しかし、この時点であなたもそうかもしれません-man vi
そしてあなたの記憶をリフレッシュしてください
まだまだたくさんありますが、数年前にViからneditに切り替えました。これにより、定期的に使用できる機能が増えました。タブ付き編集、インクリメンタルサーチバー、列選択、コピーアンドペースト。選択した行を並べ替え、選択範囲内で検索して破棄、ドキュメント全体、または開いているすべてのドキュメント..ティアオフドロップダウンメニュー..使用するすべての言語の構文の強調表示をサポートします..(長い間使用してきたパターンファイルを使用)何年にもわたって、VIMの多くは同等になりましたが、Neditにはない機能と、再度切り替える前にパターンファイルを移行する簡単な方法を導入する必要があります。
これらのコマンドを学習するときにvimtutorを実行するのも良いことです
私の最大のヒント:ctrl+q誤ってctrl+sを押して、作業中のファイルを保存する日を節約します
私はこれを私のvimrcに持っています
set number
set relativenumber
これによりj、kキーを本当に生産的にする行番号付けシステムが得られます。
私は vi を非常に軽く使用し、次のコマンドのみを使用します。
a - switch to insert mode (after the cursor)
esc - return to command mode
:wq - save and quit
:q - quit (no save, only without modification)
:q! - force quit (no save, also with modification)
x - delete one character (in command mode)
dd - delete the whole line (in command mode)
他にもたくさんあることは知っていますが、それで十分です。
:%!xxd
バッファーの内容を 16 進数で表示します。元に戻します:
:%!xxd -r
Bram Moolenaar と Oleg Raisky によるVim 5.6 Reference Guideが気に入っています。
小冊子の形で直接印刷できるので読みやすく、いつも置いてあります。
少し古いですが、Viの寿命は8年ですか?
:set ignorecase smartcase
検索に大文字が含まれていない限り、大文字と小文字を区別しない検索を行います。おそらく最も必須というわけではありませんが、新しい場所で編集するときはいつでもこのオプションを設定していることに気づきます。私が所有するvimrcファイルにあります。
i-挿入モード(エスケープして終了)dd-行の削除shift-y-'Yank'(コピー)行p-'Put'(貼り付け)行shift-v-テキストの選択に使用されるビジュアルモード(tryin'yanking 'このテキストと'どこかに置く'ctrl-wn-新しいウィンドウを作成する(ここでファイルを開くか、新しいファイルを開始できます)ctrl-w v-既存のウィンドウを垂直に分割しますctrl-n(挿入モード)-オートコンプリート(サポートされている場合):!シェルコマンドを実行するには、通常、ファイルまたは選択として標準入力を使用します(shift-V)
確認するのに便利なプラグイン:*バッファエクスプローラー-\ beを使用してバッファ内のファイルを表示します(そして再度開くことを選択します)
私は数ヶ月前にTextmateからVIMに切り替え、VIM内で110のTextmate編集コマンドを実行する方法についてのガイドを書きました。これは、ファイルの管理、単語の自動補完、構文の強調表示などのカテゴリに編成されています。
熱狂的な ctags について誰も言及していませんか? グーグルしてインストールします。おそらく持っているデフォルトの ctags よりもはるかに優れています。これを使用するには、cd でプロジェクト ルートに移動し、次のように入力します。
:!ctags -R .
プロジェクト内のすべてのデータベースを構築します...java、c++、python、ruby、javascript、何でも、tags と呼ばれるファイルに格納します。
生成されたタグを使用するための、要約するには多すぎるコマンドのホストの :help ctags。関数名にカーソルを置き、CMD と入力して、それを定義するファイルを開きます。そのようなコマンドは他にもたくさんあります。すぐに第 2 の性質になります... IDE とほぼ同じくらい優れています (そして、VIM は、Eclipse がよくするように決してあなたを失望させません.
私のお気に入り:
% find matching bracket/brace
* and # next/previous match
gg top of page
G end of the page
<Ctrl-v> Change to visual mode and select column
<Ctrl-a> increase current number by 1
<Ctrl-x> decrease current number by 1
Running macros
他の何人かがすでに述べているように、vimtutor が最適です。vimで知る必要があるすべてを教えてくれます。私があなたに与える一般的なアドバイスの 1 つは、できるだけ挿入モードを避けることです。他のモードには非常に強力な機能があり、慣れるには少し練習が必要です。
注: vi は vim ではありません。vim は急速に新世紀の emac になりつつあります。nvi はおそらく元の vi に最も近いものです。ここに良いヒントがあります: "xp" は 2 つの文字を交換します (試してみてください)。
ファイル内のすべての場所で「foo」を「bar」に置き換えます:%s/foo/bar/gc
私のお気に入りのコマンドの 1 つは、ファイルの末尾に直接移動する %G です。ログファイルで特に役立ちます。
モードを切り替える方法 (i で挿入モードに入る (多くの方法の 1 つ)、esc で挿入モードを終了する、コロンでコマンド モード)、および保存して終了する方法。(:wq)
もう 1 つの便利なコマンドは、何かを検索することです。たとえば、/Mon は、ファイル内の Mon のすべての出現箇所を検索します (vim のハイライトの場合)。
ここのチュートリアルを使用して最初のステップを作成し、リファレンス チートシートを数週間使用しました。そしてもちろん、vim/gvim/Macvim には vimtutor があります。
バッファを再フォーマットすると便利な場合があります (つまり、再タブ、中括弧の整列など)。私は最近、これの時間を節約できることを学びました:
gg=G
たとえば...次のようになります。
if ( !flag )
{
// Do something special
}
else
{
// Do another special thing
}
以下に:
if ( !flag )
{
// Do something special
}
else
{
// Do another special thing
}
または、形式がすべておかしなため、再インデントしたい xml ファイルがある場合は、上記のコマンドを実行して、次のように変更できます。
<root>
<addressBook>
<contact first="Frank" last="Tank"/>
<contact first="Foo" last="Man"/>
</addressBook>
</root>
次のように、もう少し人間が読める形式に変換します。
<root>
<addressBook>
<contact first="Frank" last="Tank"/>
<contact first="Foo" last="Man"/>
</addressBook>
</root>
本当の力は検索にあります。重要なコマンドは次のとおりです。
/Steve は、テキスト内で "Steve" の最初のインスタンスを検索します。n は、テキスト内の次の "Steve" を検索します。:%s//Stephen/g は、検索したばかりの "Steve" のすべてのインスタンスを "Stephen" に置き換えます。
自分を宣伝するためではありませんが、この件に関するブログ投稿を書きました。初心者向けの Vim の重要な部分に焦点を当てています。
:g/<pattern>/t$
<pattern>
ファイルの末尾にコピーされます。行を抽出したいが、1行ずつ抽出したくない場合に便利です。
基本的な移動コマンドを楽しく学ぶ方法については、このサイト ( http://kikuchiyo.org ) を参照してください。ほとんどの重要なコマンドはスレッドでカバーされていると思いますが、vim の初心者にこれを提案するのが好きです。i
基本的な移動コマンドの凡例とルビーをピックアップするための挿入コマンドがある最初のトレーニング リンクをクリックします。すばやく動き回るための良い練習です。