我正在使用emacs web-mode来编辑我的php文件,并注意到tab键不能按照我预期的方式在几种不同的情况下工作。例如,如果我有一个跨越多行这样的字符串......
<?php
return "
<nav>
<a href='index.php?page=skills'>My skills and background</a>
<a href='index.php?page=projects'>Some projects</a>
</nav>
";
?>
然后我用锚标记转到行的开头,按Tab键没有任何反应。我必须使用空格键以我想要的方式缩进行。
另一种情况发生在php块内部,例如
<?php
error_reporting( E_ALL );
ini_set( "display_errors", 1);
$pageData = new stdClass();
$pageData->title = "Jordan: Portfolio site";
$pageData->content = include_once "views/navigation.php";
$navigationIsClicked = isset($_GET['page']);
if($navigationIsClicked) {
$fileToLoad = $_GET['page'];
$pageData->content .= "<p>Will soon load $fileToLoad.php</p>";
}
$page = include_once "templates/page.php";
echo $page;
?>
如果我转到其中一个变量赋值行并且推送选项卡没有任何反应,则空格可以正常工作,然后在if块内只允许1个选项卡。有没有办法改变此模式在.emacs文件中使用选项卡的方式。我目前在我的.emacs中有这个
(defun my-setup-php ()
;; enable web mode
(web-mode)
;; make these variables local
(make-local-variable 'web-mode-code-indent-offset)
(make-local-variable 'web-mode-markup-indent-offset)
(make-local-variable 'web-mode-css-indent-offset)
;; set indentation, can set different indentation level for different code type
(setq web-mode-code-indent-offset 4)
(setq web-mode-css-indent-offset 2)
(setq web-mode-markup-indent-offset 2))
(add-to-list 'auto-mode-alist '("\\.php$" . my-setup-php))
答案 0 :(得分:2)
事实证明我的问题与网络模式完全无关。默认情况下emacs绑定到tab键的函数称为indent-for-tab-command
我正在查找的函数名为tab-to-tab-stop
,默认情况下绑定到M-i。这个website详细解释了tab键如何在emacs中工作以及如何自定义它。
答案 1 :(得分:0)
您应该尝试(setq-default indent-tabs-mode t)