Emacs yasnippet 补全出现乱码

自己经常使用 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

已经解决了,不好意思。是因为符号`的问题。