自己经常使用 yasnippet, 但是自己在制作一些 snippets的时候,在文本进行补全的时候有些特殊的符号,比如$. 会出现乱码的情况,一大顿的英文字母。大家出现这个情况吗?
$
符号是 snippet 中变量标识符,找下文档转义之后看看
我就是在模板里面使用 $,而不是$,这个是没有问题。我怀疑不是我模板的问题,是不是emacs编码设置的问题。奇怪。
我的模板如下:
-- mode: snippet --
name: Super calculation task
key: task
–
#!/bin/bash folder=’${1:folder}’ threadName=’$2’ mainCode=’$3’
Please change min, max, interval accoring to your division
min=$4 max=$5 interval=$6
cd ${folder}
#rm -rf *.out # remove old out files #rm -rf .sbatch # remove old sbatch files #rm -rf ${threadName}${begin}.m # remove old temp files
scancel -u fugang # remove all old tasks
for ((i = ${min} ; i < ${max} ; i = ${i} + ${interval})); do
echo “$i”
end=expr \${i} + \${interval}
begin=expr \${i} + 1
if [[ ${end} -le ${max} ]]; then
sed -i ‘/index=/cindex=[’"${begin}":"${end}"’];’ ${folder}/${mainCode}
cp ${mainCode} ${folder}/${threadName}${begin}.m
echo “index=[${begin}:${end}]”
echo “#!/bin/bash” >> ${threadName}${begin}.sbatch
echo “cd ${folder}” >> ${threadName}${begin}.sbatch
echo “/home/software/MATLAB/R2017b/bin/matlab -nodisplay -nodesktop -r “run ${folder}/${threadName}${begin}.m”” >> ${threadName}${begin}.sbatch
chmod +x ${threadName}${begin}.sbatch
sleep 2
sbatch -p hpxg ${threadName}${begin}.sbatch
else
echo “${begin}”;
sed -i ‘/index=/cindex=[’"${begin}":"${max}"’];’ ${folder}/${mainCode}
cp ${mainCode} ${folder}/${threadName}${begin}.m
echo “index=[${begin}:${max}]”
echo “#!/bin/bash” >> ${threadName}${begin}.sbatch
echo “cd ${folder}” >> ${threadName}${begin}.sbatch
echo “/home/software/MATLAB/R2017b/bin/matlab -nodisplay -nodesktop -r “run ${folder}/${threadName}${begin}.m”” >> ${threadName}${begin}.sbatch
chmod +x ${threadName}${begin}.sbatch
sleep 2
sbatch -p hpxg ${threadName}${begin}.sbatch
fi
done
$0
在shell-mode补全出现下面的乱码: #!/bin/bash folder=‘folder’ threadName=’’ mainCode=’’
Please change min, max, interval accoring to your division
min= max= interval=
cd YASESCAPE36PROTECTGUARD{folder}
#rm -rf *.out # remove old out files #rm -rf .sbatch # remove old sbatch files #rm -rf YASESCAPE36PROTECTGUARD{threadName}begin.m # remove old temp files
scancel -u fugang # remove all old tasks
for ((i = YASESCAPE36PROTECTGUARD{min} ; i < YASESCAPE36PROTECTGUARD{max} ; i = YASESCAPE36PROTECTGUARD{i} + YASESCAPE36PROTECTGUARD{interval})); do echo “YASESCAPE36PROTECTGUARDi” end=YY begin=Y if [[ YASESCAPE36PROTECTGUARD{end} -le YASESCAPE36PROTECTGUARD{max} ]]; then sed -i ‘/index=/cindex=[’“YASESCAPE36PROTECTGUARD{begin}”:“YASESCAPE36PROTECTGUARD{end}”’];’ YASESCAPE36PROTECTGUARD{folder}/YASESCAPE36PROTECTGUARD{mainCode} cp YASESCAPE36PROTECTGUARD{mainCode} YASESCAPE36PROTECTGUARD{folder}/YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.m echo “index=[YASESCAPE36PROTECTGUARD{begin}:YASESCAPE36PROTECTGUARD{end}]” echo “#!/bin/bash” >> YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch echo “cd YASESCAPE36PROTECTGUARD{folder}” >> YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch echo “/home/software/MATLAB/R2017b/bin/matlab -nodisplay -nodesktop -r “run YASESCAPE36PROTECTGUARD{folder}/YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.m”” >> YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch chmod +x YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch sleep 2 sbatch -p hpxg YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch else echo “YASESCAPE36PROTECTGUARD{begin}”; sed -i ‘/index=/cindex=[’“YASESCAPE36PROTECTGUARD{begin}”:“YASESCAPE36PROTECTGUARD{max}”’];’ YASESCAPE36PROTECTGUARD{folder}/YASESCAPE36PROTECTGUARD{mainCode} cp YASESCAPE36PROTECTGUARD{mainCode} YASESCAPE36PROTECTGUARD{folder}/YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.m echo “index=[YASESCAPE36PROTECTGUARD{begin}:YASESCAPE36PROTECTGUARD{max}]” echo “#!/bin/bash” >> YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch echo “cd folder” >> YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch echo “/home/software/MATLAB/R2017b/bin/matlab -nodisplay -nodesktop -r “run YASESCAPE36PROTECTGUARD{folder}/YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.m”” >> YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch chmod +x YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch sleep 2 sbatch -p hpxg YASESCAPE36PROTECTGUARD{threadName}YASESCAPE36PROTECTGUARD{begin}.sbatch fi done
已经解决了,不好意思。是因为符号`的问题。