私は以下を書きました。vimrc.vim
:filetype plugin on
:let s:save_cpo = &cpo
:set cpo&vim
:let &cpo = s:save_cpo
:set runtimepath = ~/home/nikcha/.vim/plugin
:set fileformat = unix
:function! print_hi()
:echo "Hi..its done"
:endfunction
:map <F7> : call print_hi()<CR>
ファイルを開いて入力すると、「何が間違っている可能性がありますか?」という:F7
エラーが表示されます。E488:Trailing Characters
答え1
以下を使用してマッピングを有効に:map
できます。F7ノーマル、ビジョン、セレクト、オペレータ未定モデル。押すと:入りますコマンドラインモード今すぐいいえ書く。
:help map-modes
概要については参考資料を参照してください。
オペレータの一時停止モードは非常に具体的であり、サンプル機能は選択には適していないため、(デフォルト)通常モードに制限することをお勧めします:nmap
。
また、使用する必要があります:noremap
;マッピングが再マッピングと再帰の影響を受けないようにします。:nnoremap
。
コマンドラインモードへのショートカットが必要な場合は、次のように定義します。カスタムコマンド代わりに:
:command! Hi call print_hi()
答え2
コロン
行の先頭のコロンはオプションです。スクリプトの場合、コードをより明確で読みやすくするため、通常は省略されます。コロンはいしかし、後で説明するように、マッピングの内部に必要です。
オプション値の設定
fileformat
などのオプション値を設定するときとruntimepath
値の間にスペースを入れないでください。=
それが必要です:
set fileformat =unix
" or
set fileformat=unix
これは真ではなく、let
変数に値を割り当てるか、オプションを参照するために使用できます。これらはすべて大丈夫です:
let s:foo = "bar"
let &fileformat = "unix"
名前付き関数
独自の関数を作成するときは、名前は大文字で始める必要があります。あなたの場合は次のとおりです。
function! Print_hi()
" |
" +----------- Capital
互換モード
保管および復元cpo
ルーチンは多くの操作を実行しません。これ「正常」あなたがしなければならないことは、それを保存し、スクリプトを作成し、最後に復元することだけです。
let s:save_cpo = &cpo
set cpo&vim
" Rest of script
let &cpo = s:save_cpo
現在のスクリプトと同様に、保存して設定し、隣接する順序で復元します。つまり、完全に省略することも、上記のパターンを使用することもできます。
このルーチンを使用する理由は、ユーザーが互換モード(vimに似ていて、それほどvimに似ていない)にあるかどうかをスクリプトで知ることができないためです。そのため、モードを保存してモードをvimに設定してから最終的に復元するのが一般的です。これにより、問題なくVim関連の機能を使用できます。
書き換えられたスクリプト
全体的に、これはあなたが望む方向にさらに一致するはずです。
let s:save_cpo = &cpo
set cpo&vim
function! Print_hi()
echo "Hi..its done"
endfunction
map <F7> :call Print_hi()<CR>
" |
" +-------------------- Note; here we use colon.
let &cpo = s:save_cpo
マッピング、E488
他の答えはあなたが得る理由を十分に説明しました。
E488:Trailing Characters
間違い。簡単に言うと、このようにマッピングされたらを押しますF7。コロンを最初に押さないでください。 Ingo Karkatは、マップ機能を使用するためのいくつかの素晴らしい提案をしました。
マッピングのコロンは、:
Vimにコマンドラインモードに入るように指示します。次にコマンドを印刷しますcall Print_hi()
。最後に、<CR>
実行コマンドラインを追加します。Enterコマンドを手動で作成するのと同じです。実際には自動キーボードシーケンスになります。
より効果的な書き込み
一般的に言えば、独自のファイルにスクリプトを追加します.vimrc
。.vimrc
スクリプトを作成してテストしたい場合は、単に次のように言うことができます。
:so %
Enter
高速ロードのために、rcファイルに次のマッピングがあります。
"^O is CTRL-O (i: Ctrl-V Ctrl-S-O; to prevent cursor movement
" Save + Source
inoremap <silent> <C-S-F12> ^O:w<CR>^O:so %<CR>
nnoremap <silent> <C-S-F12> :w<CR>:so %<CR>
" Source
inoremap <silent> <C-F12> ^O:so %<CR>
nnoremap <silent> <C-F12> :so %<CR>
選択したコードだけをインポートする機能もありますが、投稿が少し長くなるから...
答え3
あなたはしないでくださいタイプ :<F7>
代わりにF7キーを押してください。これが意味するのは次のとおりです:map <F7> : call print_hi()<CR>
。
:map # Map the following printable characters:
<F7> # # How F7 is seen by vim
: # to
call # call a function:
print_hi() # # previously defined function print_hi
<CR> # and print a new line.
ビジュアルモード(入力:bla)で関数を呼び出すには、キーストロークを使用せずに入力する必要があります:call print_hi()
。