1

.tex が利用可能な場合に latexmk を呼び出すキーマップを作成しようとしています (.tex が現在開いていてアクティブなバッファであるとよいでしょう)。

私は試した :

:nnoremap <Leader>lw :if filereadable('*.tex')<cr>up!<cr>:!latexmk -pdf<cr>endif<cr>

latexmk -pdf を実行しようとすると、残念ながら、ウィンドウにこれらの行を表示するだけで、次のようなことは何もしません。

~
:if filereadable('*.tex')
:  up!
:  :call Tex_RunLaTeX()
:  endif
Press ENTER or type command to continue

親切に助けてください。

(.tex が現在開いていてアクティブなバッファであるときにこれを行うことができれば、素晴らしいことです。)

注意: この質問とその変形は、ここで何度か質問されています (例: thisthis )。したがって、繰り返し申し訳ありません。私はそれらの問題を解決できませんでした。

4

2 に答える 2

1

これはautocmdで実行できると思います。

autocmd は、ファイルが tex ファイルの場合にのみマッピングをロードします。

autocmd FileType tex nnoremap <leader>lw :up! \| !latexmk -pdf<CR>

ディレクトリ内のファイルがtexファイルであるかどうかを確認するだけのこのファイル読み取り可能( '* .tex')を実行したい場合。最初のリンクの expr マッピングを使用できます。式の else 部分には空の文字列を入れるだけなので、マッピングは何もしません。

nnoremap <expr> <leader>lw filereadable('*.txt') ? ':up! \| !latexmk -pdf<CR>' : ''
于 2013-06-18T23:52:32.180 に答える
1

次の 3 つのことを行う必要があります。

  • コマンドを正しく実行するようにマッピングを修正します
  • <buffer>オプション forを使用して、特定のバッファにローカルなマッピングを作成しますnnoremap
  • 特定のファイルタイプだけのマッピングをロードします。

まず、 &を使用<bar>および削除して、コマンドを単一の ex コマンドとして実行し、マッピングを修正します。ファイルを書き込んだばかりなので、ファイル読み取り可能な部分も削除します。:<cr>

nnoremap <buffer> :up!<bar>!latexmk -pdf<cr>

または、FDinoff が提案したような表現マッピングを使用できます。

<buffer>マッピングのオプションに注意してください。これにより、すべてのバッファではなく、現在のバッファでのみマッピングが利用可能になります。

ここで、このマッピングがtexファイル タイプに対してのみ機能することを確認する必要があります。.vimrcこれは、次のように自動コマンドを介して実行できます。

autocmd FileType tex nnoremap <buffer> :up!<bar>!latexmk -pdf<cr>

もう 1 つの方法は、filetype プラグインを作成することです。(詳細については、を参照:h ftpluginしてください)

簡単な例は、という名前のファイルを作成し、~/.vim/ftplugin/text.vimマッピングを次のように内部に配置することです。

nnoremap <buffer> :up!<bar>!latexmk -pdf<cr>

私は個人的には ftplugin アプローチに傾倒していますが、.vimrcファイルにすべてが含まれていると便利です。

于 2013-06-19T00:47:43.647 に答える