Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

keymaps

Ronald Record edited this page Jul 18, 2023 · 6 revisions

Keymaps Generation Script

The information.sh script used to auto-generate Neovim configuration info documents invokes the keymaps.sh script to generate tables of keymaps for each configuration. These are added to the configuration info documents.

View the supported configurations info docs.

Keymaps script source

The source code for the keymaps.sh script:

#!/usr/bin/env bash
#
# Mapping modes:
# n	Normal
# v	Visual and Select
# s	Select
# x	Visual
# o	Operator-pending
# i	Insert
# l	":lmap" mappings for Insert, Command-line and Lang-Arg
# c	Command-line
# t	Terminal-Job
debug=
[ "1ドル" == "-d" ] && {
 debug=1
 shift
}
CFNAME="1ドル"
OUT="2ドル"
if [ -d "${HOME}/.config/nvim-${CFNAME}" ]
then
 export NVIM_APPNAME="nvim-${CFNAME}"
else
 if [ -d "${HOME}/.config/${CFNAME}" ]
 then
 export NVIM_APPNAME="${CFNAME}"
 else
 exit 1
 fi
fi
KEYTMP="${HOME}/.config/nvim-Lazyman/tmp"
OUTDIR=$(dirname "${OUT}")
[ -d "${KEYTMP}" ] || mkdir -p "${KEYTMP}"
[ -d "${OUTDIR}" ] || mkdir -p "${OUTDIR}"
echo "local normal_mode = " > "${KEYTMP}"/${CFNAME}.lua
echo "" >> "${KEYTMP}"/${CFNAME}.lua
nvim --headless '+lua vim.print(vim.api.nvim_get_keymap("n"))' +qa >> "${KEYTMP}"/${CFNAME}.lua 2>&1
printf "\n\nlocal visual_mode = " >> "${KEYTMP}"/${CFNAME}.lua
echo "" >> "${KEYTMP}"/${CFNAME}.lua
nvim --headless '+lua vim.print(vim.api.nvim_get_keymap("x"))' +qa >> "${KEYTMP}"/${CFNAME}.lua 2>&1
printf "\n\nlocal operator_mode = " >> "${KEYTMP}"/${CFNAME}.lua
echo "" >> "${KEYTMP}"/${CFNAME}.lua
nvim --headless '+lua vim.print(vim.api.nvim_get_keymap("o"))' +qa >> "${KEYTMP}"/${CFNAME}.lua 2>&1
have_dtox=$(type -p dtox)
if [ "${have_dtox}" ]
then
 dtox "${KEYTMP}"/${CFNAME}.lua
else
 have_dos=$(type -p dos2unix)
 if [ "${have_dos}" ]
 then
 dos2unix "${KEYTMP}"/${CFNAME}.lua
 else
 echo "Unable to perform DOS to UNIX conversion"
 fi
fi
echo "" >> "${OUT}"
echo "### ${CFNAME} Keymaps" >> "${OUT}"
cat "${KEYTMP}"/${CFNAME}.lua | sed -e "s/{ {$/\n{ {/" | \
 grep -v callback | grep -v "^\[" | grep -v ^Error | \
 grep -v ^Fail | grep -v ^Some | grep -v ^\& | grep -v ^sh | \
 grep -v ^Tele | grep -v ^Lua | grep -v ^Two | grep -i -v ^vim | \
 grep -v ^stack | grep -v "[[:space:]]/home/" | grep -v ^mkdir | \
 grep -v "[[:space:]]\[C\]" | grep -v ^down | grep -v ^cwd | \
 grep -v "^\.\.\." | grep -v "[[:space:]]\.\.\." | grep -v "^\# stack" | \
 grep -v -- "[[:space:]]- " | grep -v ^Install | grep -v ^Welcome | \
 grep -v "[[:space:]]vim/" | grep -v ^run | grep -v ^plea | \
 grep -v ^Plugin | grep -v -- ^- > /tmp/${CFNAME}$$.lua
for mode in "normal" "visual" "operator"
do
 cp /tmp/${CFNAME}$$.lua "${KEYTMP}"/${CFNAME}.lua
 echo "" >> "${KEYTMP}"/${CFNAME}.lua
 echo "for k,v in pairs(${mode}_mode) do" >> "${KEYTMP}"/${CFNAME}.lua
 echo " if v.desc ~= nil then" >> "${KEYTMP}"/${CFNAME}.lua
 echo " io.write('| ' .. v.desc)" >> "${KEYTMP}"/${CFNAME}.lua
 echo " else" >> "${KEYTMP}"/${CFNAME}.lua
 echo " io.write('| ')" >> "${KEYTMP}"/${CFNAME}.lua
 echo " end" >> "${KEYTMP}"/${CFNAME}.lua
 echo " if v.lhs ~= nil then" >> "${KEYTMP}"/${CFNAME}.lua
 echo " io.write(' | ' .. v.lhs)" >> "${KEYTMP}"/${CFNAME}.lua
 echo " else" >> "${KEYTMP}"/${CFNAME}.lua
 echo " io.write(' | ')" >> "${KEYTMP}"/${CFNAME}.lua
 echo " end" >> "${KEYTMP}"/${CFNAME}.lua
 echo " if v.rhs ~= nil then" >> "${KEYTMP}"/${CFNAME}.lua
 echo ' io.write(" | " .. v.rhs .. " |\n")' >> "${KEYTMP}"/${CFNAME}.lua
 echo " else" >> "${KEYTMP}"/${CFNAME}.lua
 echo ' io.write(" | |\n")' >> "${KEYTMP}"/${CFNAME}.lua
 echo " end" >> "${KEYTMP}"/${CFNAME}.lua
 echo "end" >> "${KEYTMP}"/${CFNAME}.lua
 echo "" >> "${OUT}"
 echo "#### ${mode} mode keymaps" >> "${OUT}"
 echo "" >> "${OUT}"
 echo "| Description | LHS | RHS |" >> "${OUT}"
 echo "| ----------- | --- | --- |" >> "${OUT}"
 lua "${KEYTMP}"/${CFNAME}.lua >> "${OUT}"
 [ "${debug}" ] && cp "${KEYTMP}"/${CFNAME}.lua "${KEYTMP}"/${CFNAME}-debug.lua
done
rm -f "${KEYTMP}"/${CFNAME}.lua
rm -f /tmp/${CFNAME}$$.lua

CSS styling

The keymaps tables are styled with the following CSS:

html {
 font-size: 100%;
 overflow-y: scroll;
 -webkit-text-size-adjust: 100%;
 -ms-text-size-adjust: 100%;
}
body {
 color: #444;
 font-family: Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif;
 font-size: 12px;
 line-height: 1.7;
 padding: 1em;
 margin: auto;
 max-width: 42em;
 background: #fefefe;
}
a {
 color: #0645ad;
 text-decoration: none;
}
a:visited {
 color: #0b0080;
}
a:hover {
 color: #06e;
}
a:active {
 color: #faa700;
}
a:focus {
 outline: thin dotted;
}
*::-moz-selection {
 background: rgba(255, 255, 0, 0.3);
 color: #000;
}
*::selection {
 background: rgba(255, 255, 0, 0.3);
 color: #000;
}
a::-moz-selection {
 background: rgba(255, 255, 0, 0.3);
 color: #0645ad;
}
a::selection {
 background: rgba(255, 255, 0, 0.3);
 color: #0645ad;
}
p {
 margin: 1em 0;
}
img {
 max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
 color: #111;
 line-height: 125%;
 margin-top: 2em;
 font-weight: normal;
}
h4, h5, h6 {
 font-weight: bold;
}
h1 {
 font-size: 2.5em;
}
h2 {
 font-size: 2em;
}
h3 {
 font-size: 1.5em;
}
h4 {
 font-size: 1.2em;
}
h5 {
 font-size: 1em;
}
h6 {
 font-size: 0.9em;
}
blockquote {
 color: #666666;
 margin: 0;
 padding-left: 3em;
 border-left: 0.5em #EEE solid;
}
hr {
 display: block;
 height: 2px;
 border: 0;
 border-top: 1px solid #aaa;
 border-bottom: 1px solid #eee;
 margin: 1em 0;
 padding: 0;
}
pre, code, kbd, samp {
 color: #000;
 font-family: monospace, monospace;
 _font-family: 'courier new', monospace;
 font-size: 0.98em;
}
pre {
 white-space: pre;
 white-space: pre-wrap;
 word-wrap: break-word;
}
b, strong {
 font-weight: bold;
}
dfn {
 font-style: italic;
}
ins {
 background: #ff9;
 color: #000;
 text-decoration: none;
}
mark {
 background: #ff0;
 color: #000;
 font-style: italic;
 font-weight: bold;
}
sub, sup {
 font-size: 75%;
 line-height: 0;
 position: relative;
 vertical-align: baseline;
}
sup {
 top: -0.5em;
}
sub {
 bottom: -0.25em;
}
ul, ol {
 margin: 1em 0;
 padding: 0 0 0 2em;
}
li p:last-child {
 margin-bottom: 0;
}
ul ul, ol ol {
 margin: .3em 0;
}
dl {
 margin-bottom: 1em;
}
dt {
 font-weight: bold;
 margin-bottom: .8em;
}
dd {
 margin: 0 0 .8em 2em;
}
dd:last-child {
 margin-bottom: 0;
}
img {
 border: 0;
 -ms-interpolation-mode: bicubic;
 vertical-align: middle;
}
figure {
 display: block;
 text-align: center;
 margin: 1em 0;
}
figure img {
 border: none;
 margin: 0 auto;
}
figcaption {
 font-size: 0.8em;
 font-style: italic;
 margin: 0 0 .8em;
}
table {
 border-collapse: collapse;
 width: 100%;
 color: #333;
 font-family: Arial, sans-serif;
 font-size: 14px;
 text-align: left;
 border-radius: 10px;
 overflow: hidden;
 box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
 margin: auto;
 margin-top: 50px;
 margin-bottom: 50px;
}
table th {
 background-color: #ff9800;
 color: #fff;
 font-weight: bold;
 padding: 10px;
 text-transform: uppercase;
 letter-spacing: 1px;
 border-top: 1px solid #fff;
 border-bottom: 1px solid #ccc;
}
table tr:nth-child(even) td {
 background-color: #f2f2f2;
}
table tr:hover td {
 background-color: #ffedcc;
}
table td {
 background-color: #fff;
 padding: 10px;
 border-bottom: 1px solid #ccc;
 font-weight: bold;
}
.author {
 font-size: 1.2em;
 text-align: center;
}
@media only screen and (min-width: 480px) {
 body {
 font-size: 14px;
 }
}
@media only screen and (min-width: 768px) {
 body {
 font-size: 16px;
 }
}
@media print {
 * {
 background: transparent !important;
 color: black !important;
 filter: none !important;
 -ms-filter: none !important;
 }
 body {
 font-size: 12pt;
 max-width: 100%;
 }
 a, a:visited {
 text-decoration: underline;
 }
 hr {
 height: 1px;
 border: 0;
 border-bottom: 1px solid black;
 }
 a[href]:after {
 content: " (" attr(href) ")";
 }
 abbr[title]:after {
 content: " (" attr(title) ")";
 }
 .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
 content: "";
 }
 pre, blockquote {
 border: 1px solid #999;
 padding-right: 1em;
 page-break-inside: avoid;
 }
 tr, img {
 page-break-inside: avoid;
 }
 img {
 max-width: 100% !important;
 }
 @page :left {
 margin: 15mm 20mm 15mm 10mm;
}
 @page :right {
 margin: 15mm 10mm 15mm 20mm;
}
 p, h2, h3 {
 orphans: 3;
 widows: 3;
 }
 h2, h3 {
 page-break-after: avoid;
 }
}

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /