組織モードのマニュアルを読みましたが、挿入するショートカットが見つかりませんでした。
#+BEGIN_SRC
#+END_SRC
ショートカットを設定するために〜/ .emacsに設定を作成する必要があると思いますか?または、ショートカットはありますが、知りませんでしたか?
私はemacsでRをたくさん使用しています。これを作成する別のショートカットを作成する方法はありますか?
#+BEGIN_SRC R
#+END_SRC
組織モードのマニュアルを読みましたが、挿入するショートカットが見つかりませんでした。
#+BEGIN_SRC
#+END_SRC
ショートカットを設定するために〜/ .emacsに設定を作成する必要があると思いますか?または、ショートカットはありますが、知りませんでしたか?
私はemacsでRをたくさん使用しています。これを作成する別のショートカットを作成する方法はありますか?
#+BEGIN_SRC R
#+END_SRC
回答:
Org-modeには、ソースブロックを挿入するための組み込みメカニズムがあります。組織マニュアルのEasy Templatesを参照してください。デフォルトの設定では、多くの#+ BLOCKSのテンプレートが提供されており、をカスタマイズして独自のテンプレートを追加できます‘org-structure-template-alist’
。
たとえば、組織バッファーを開い<sTABて入力し、BEGIN / END_SRCブロックを挿入します。
, i b
にspacemacs
?
[これは@glucasと@manandearthによる回答への追加/明確化です-それ自体では成り立ちません。]
org-modeの最近の開発バージョン(> = 9.2)では(したがって、将来の安定バージョンで変更がない限り)org-structure-template-alist
タイプが変更されていることに注意してください。組み込みの簡単なテンプレートメカニズムは、tempo
パッケージに基づくより一般的なメカニズムのために放棄されました。残念ながら、この新しいメカニズムでは<
、の後の1文字の省略形しか使用できないため、OPが要求<s
する#+BEGIN_SRC...#+END_SRC
文字列に拡張されますが<el
、@ manandearthの回答のようなものは機能しません。これはまだ進行中の作業なので、状況は変わる可能性がありますが、複数文字の<XXX
省略形を使用する場合は、org-modeをそのようなバージョンにアップグレードするときにそれらが壊れる可能性があることに注意してください。
別のメカニズムもあります:C-c C-,
にバインドしorg-insert-structure-template
て、挿入するブロックの種類を要求します(使用可能なすべてのブロックをリストし、1回のキーを押すだけで選択できるメニューが表示されます)。その利点はbegin/end
、リージョンの周りをラップすることです。したがって、すでにたくさんのものを入力していて、それをブロックにラップしたい場合は、リージョンとして選択し、C-c C-.
その後に単一の文字を入力するだけです。ブロックのタイプを選択します。
このノート [fn:1]、(新しい)関数のdoc文字列、org-insert-structure-template
およびファイルを 参照してくださいorg-tempo.el
。
[fn:1]変更される可能性のあるファイル内の固定行番号を指しているため、リンクは不正確になる可能性があります。リンクをクリックしても適切な場所に移動できない場合は、「構造テンプレートの展開」という文字列を検索して、この回答を自由に編集して行番号を修正してください-ありがとうございます。
ソースブロックの動作は、組織9.2で変更します。省略形<s
はデフォルトでは機能しなくなりました。代わりに、C-c C-,
which を使用しますorg-insert-structure-template
。
を押すとC-c C-,
ダイアログが表示されます。を押してTAB
から、を入力しsrc R
ます。これにより、ソースブロックが挿入され、カーソルが2行目の先頭に置かれます(point|
とします)。
#+begin_src R
|#+end_src
次にブロック内を編集するには、を押しC-o
て新しい行を開きます。
にエントリを追加して、テンプレートを保存できますorg-structure-template-alist
。以下をどこかに置くか、init.el
を使用して実行しますC-x C-e
:
(add-to-list 'org-structure-template-alist '("r" . "src R"))
すると、リストにのC-c C-,
エントリが表示さr
れます。他の言語(Python、Rubyなど)でも同じ方法を使用できます。上の点線のペア(「src R」の部分)のcdrを置き換えるだけです。
さらに、ソースブロック区切り文字の間に行を挿入するには、を使用して改行文字を挿入できますC-q C-j
。つまり、上記の点線のペアのcdrを入力src
R
C-q C-j
します。結果は次のようになります。
(add-to-list 'org-structure-template-alist '("R" . "src R
"))
あなたが押したときに今R
、Emacsはソースブロックを挿入し、新しい行(LET上で、それらの間にカーソルを置く|
ことがポイント):
#+begin_src R
|
#+end_src
<s
バインディングは、まだあなただけ含める必要があり、存在する(require org-temp)
ことを可能にするためにあなたのinitに。
(require 'org-tempo)
コードブロックのキーバインディングについてbabel-org
は、次のようにバインドし<r
てからa を試してください<tab>
。
;; add <r for R expansion
(add-to-list 'org-structure-template-alist
'("p" "#+BEGIN_SRC r :results output org drawer\n?\n#+END_SRC"
"<src lang=\"r\">\n?\n</src>"))
ソースをESSに変更することもできます。
に<p
続いて<tab>
をpythonブロックコードにバインドするには、例えば:
;; add <p for python expansion
(add-to-list 'org-structure-template-alist
'("p" "#+BEGIN_SRC python :results output org drawer\n?\n#+END_SRC"
"<src lang=\"python\">\n?\n</src>"))
emacs-lispセットの<el
後にa <tab>
が続く:
;; add <el for emacs-lisp expansion
(add-to-list 'org-structure-template-alist
'("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC"
"<src lang=\"emacs-lisp\">\n?\n</src>"))
の他の有用なバインディングは次のorg-mode
とおりです。
(add-to-list 'org-structure-template-alist
'("ao" "#+attr_org: " ""))
(add-to-list 'org-structure-template-alist
'("al" "#+attr_latex: " ""))
(add-to-list 'org-structure-template-alist
'("ca" "#+caption: " ""))
(add-to-list 'org-structure-template-alist
'("tn" "#+tblname: " ""))
(add-to-list 'org-structure-template-alist
'("n" "#+name: " ""))
(add-to-list 'org-structure-template-alist
'("o" "#+options: " ""))
(add-to-list 'org-structure-template-alist
'("ti" "#+title: " ""))
(add-to-list 'org-structure-template-alist '("p" . "src python"))
YASnippet Emacsパッケージをご覧ください。それはあなたがいくつかのキーワードとタブの後にコードスニペットを追加することを可能にします。orgモード内とRスクリプトの両方で、はるかにシンプルで便利です。次のようなファイルを保存する.emacs.d / snippets / ess-mode(およびorg-modeのフォルダー)にフォルダーが必要です。
# -*- mode: snippet -*-
# name: in
# key: in
# --
%in%
TABと入力すると、同様に%in%に固定されます。
# -*- mode: snippet -*-
# name: source_r
# key: srcr_
# --
#+BEGIN_SRC R
$0
#+END_SRC
https://www.emacswiki.org/emacs/Yasnippet
https://joaotavora.github.io/yasnippet/snippet-development.html
(require 'org-tempo)
追加する必要があります.emacs
。また、ここにEasy Templates-> orgmode.org/manual/Easy-templates.html